NextRequest
NextRequest は、追加の便利な Method でWeb Request API を拡張します。
cookies
Set-Cookie
header を request で読み込むか変更します。
set(name, value)
名前が指定された場合、その指定された value を用いて、request 上に cookie を設定します。
// Given incoming request /home
// Set a cookie to hide the banner
// request will have a `Set-Cookie:show-banner=false;path=/home` header
request.cookies.set("show-banner", "false");
get(name)
cookie の名前が与えられた場合、その cookie の value を返します。もし cookie が見つからなければ、undefined
が返されます。複数の cookies が見つかった場合は、最初のものが返されます。
// Given incoming request /home
// { name: 'show-banner', value: 'false', Path: '/home' }
request.cookies.get("show-banner");
getAll()
cookie の名前が指定された場合、その cookie の値を返します。名前が指定されていない場合、request 上のすべての cookies を返します。
// Given incoming request /home
// [
// { name: 'experiments', value: 'new-pricing-page', Path: '/home' },
// { name: 'experiments', value: 'winter-launch', Path: '/home' },
// ]
request.cookies.getAll("experiments");
// Alternatively, get all cookies for the request
request.cookies.getAll();
delete(name)
cookie の名前が与えられた場合、その cookie を request から delete してください。
// Returns true for deleted, false is nothing is deleted
request.cookies.delete("experiments");
has(name)
cookie の名前が与えられた場合、その cookie が request 上に存在する場合はtrue
を返します。
// Returns true if cookie exists, false if it does not
request.cookies.has("experiments");
clear()
Set-Cookie
の header を request から削除してください。
request.cookies.clear();
nextUrl
ネイティブの URL
API を拡張し、Next.js 特有のプロパティを含む追加の便利な Method を提供します。
// Given a request to /home, pathname is /home
request.nextUrl.pathname;
// Given a request to /home?name=lee, searchParams is { 'name': 'lee' }
request.nextUrl.searchParams;
次の options が利用可能です。
プロパティ | Type | Description |
---|---|---|
basePath | string | URL の基本 path。 |
buildId | string | undefined | Next.js アプリケーションの build 識別子。カスタマイズ可能です。 |
pathname | string | URL の pathname. |
searchParams | Object | URL の検索パラメータ。 |
注意: Pages Router からの国際化プロパティは、 App Router で使用することはできません。App Router による国際化についてさらに詳しく学んでください。
ip
ip
プロパティは、request の IP アドレスを含む string です。この value は、ホスティングプラットフォームからオプションで提供されることがあります。
Good to know: Vercel では、この value は default によって提供されます。他のプラットフォームでは、IP アドレスを提供するために
X-Forwarded-For
header を使用することができます。
// Provided by Vercel
request.ip;
// Self-hosting
request.headers.get("X-Forwarded-For");
geo
geo
プロパティは、request の地理的情報を含む object です。この value は、あなたのホスティングプラットフォームによってオプションで提供することができます。
Good to know: Vercel では、この value は default によって提供されます。他のプラットフォームでは、
X-Forwarded-For
header を使用して IP アドレスを提供し、その後第三者サービス を使用して地理情報を検索します。
// Provided by Vercel
request.geo.city;
request.geo.country;
request.geo.region;
request.geo.latitude;
request.geo.longitude;
// Self-hosting
function getGeo(request) {
let ip = request.headers.get("X-Forwarded-For");
// Use a third-party service to lookup the geographic information
}