NextRequest
NextRequest расширяет Web Request API дополнительными удобными методами.
cookies
Чтение или изменение заголовка Set-Cookie
запроса.
set(name, value)
Устанавливает cookie с заданным именем и значением в запросе.
// Для входящего запроса /home
// Установка cookie для скрытия баннера
// запрос будет содержать заголовок `Set-Cookie:show-banner=false;path=/home`
request.cookies.set('show-banner', 'false')
get(name)
Возвращает значение cookie по имени. Если cookie не найдена, возвращается undefined
. Если найдено несколько cookie, возвращается первая.
// Для входящего запроса /home
// { name: 'show-banner', value: 'false', Path: '/home' }
request.cookies.get('show-banner')
getAll()
Возвращает значения cookie по имени. Если имя не указано, возвращает все cookie запроса.
// Для входящего запроса /home
// [
// { name: 'experiments', value: 'new-pricing-page', Path: '/home' },
// { name: 'experiments', value: 'winter-launch', Path: '/home' },
// ]
request.cookies.getAll('experiments')
// Альтернативно, получить все cookie запроса
request.cookies.getAll()
delete(name)
Удаляет cookie с указанным именем из запроса.
// Возвращает true при успешном удалении, false если ничего не удалено
request.cookies.delete('experiments')
has(name)
Возвращает true
, если cookie с указанным именем существует в запросе.
// Возвращает true если cookie существует, false если нет
request.cookies.has('experiments')
clear()
Удаляет заголовок Set-Cookie
из запроса.
request.cookies.clear()
nextUrl
Расширяет нативный URL
API дополнительными удобными методами, включая свойства, специфичные для Next.js.
// Для запроса к /home, pathname будет /home
request.nextUrl.pathname
// Для запроса к /home?name=lee, searchParams будет { 'name': 'lee' }
request.nextUrl.searchParams
Доступны следующие свойства:
Свойство | Тип | Описание |
---|---|---|
basePath | string | Базовый путь URL. |
buildId | string | undefined | Идентификатор сборки приложения Next.js. Можно настроить. |
defaultLocale | string | undefined | Локаль по умолчанию для интернационализации. |
domainLocale | ||
- defaultLocale | string | Локаль по умолчанию в домене. |
- domain | string | Домен, связанный с конкретной локалью. |
- http | boolean | undefined | Указывает, использует ли домен HTTP. |
locales | string[] | undefined | Массив доступных локалей. |
locale | string | undefined | Текущая активная локаль. |
url | URL | Объект URL. |
ip
Свойство ip
содержит строку с IP-адресом запроса. Это значение может быть предоставлено вашей хостинговой платформой.
Полезно знать: На Vercel это значение предоставляется по умолчанию. На других платформах вы можете использовать заголовок
X-Forwarded-For
для указания IP-адреса.
// Предоставляется Vercel
request.ip
// Самостоятельный хостинг
request.headers.get('X-Forwarded-For')
geo
Свойство geo
содержит объект с географической информацией о запросе. Это значение может быть предоставлено вашей хостинговой платформой.
Полезно знать: На Vercel это значение предоставляется по умолчанию. На других платформах вы можете использовать заголовок
X-Forwarded-For
для получения IP-адреса, а затем воспользоваться сторонним сервисом для определения географической информации.
// Предоставляется Vercel
request.geo.city
request.geo.country
request.geo.region
request.geo.latitude
request.geo.longitude
// Самостоятельный хостинг
function getGeo(request) {
let ip = request.headers.get('X-Forwarded-For')
// Использовать сторонний сервис для определения географической информации
}