メインコンテンツまでスキップ

NextRequest

NextRequest は Web Request API に便利なメソッドを追加して拡張しています。


cookies

リクエストのSet-Cookieヘッダーを取得または、変更します。

set(name, value)

名前を指定し、リクエストに与えられた値のクッキーを設定します。

// /home へのリクエスト
// バナーを隠すためのクッキーをセットする
// リクエストのヘッダーに`Set-Cookie:show-banner=false;path=/home`をセットする
request.cookies.set('show-banner', 'false')

get(name)

クッキーの名前が指定されると、そのクッキーの値が返されます。クッキーが見つからない場合は、undefinedが返されます。複数のクッキーが見つかった場合は、最初のものが返されます。

// /home へのリクエスト
// { name: 'show-banner', value: 'false', Path: '/home' }
request.cookies.get('show-banner')

getAll()

クッキーの名前が指定されている場合、そのクッキーの値を返します。名前が指定されていない場合、リクエストに関連するすべてのクッキーを返します。

// /homeへの入力リクエスト
// [
// { name: 'experiments', value: 'new-pricing-page', Path: '/home' },
// { name: 'experiments', value: 'winter-launch', Path: '/home' },
// ]
request.cookies.getAll('experiments')
// または、リクエストに関連するすべてのクッキーを取得する
request.cookies.getAll()

delete(name)

クッキーの名前が指定された場合、そのクッキーをリクエストから削除します。

// 削除された場合は true を戻し、何も削除されなかった場合は false を戻します
request.cookies.delete('experiments')

has(name)

クッキーの名前が指定された場合、そのクッキーがリクエスト上に存在する場合はtrueを返します。

// クッキーが存在する場合は true を戻し、存在しない場合は 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

以下のオプションが利用可能です:

プロパティ説明
basePathstringURL のベースパス
buildIdstring | undefinedNext.jsアプリケーションのビルド識別子。カスタマイズすることができます。
pathnamestringURL のパス名
searchParamsObjectURL の検索パラメータ

注意: ページルーターの国際化プロパティは、アプリルーターでの使用はできません。アプリルーターによる国際化について詳しく学ぶ。

ip

ip プロパティはリクエストのIPアドレスを含む文字列です。この値はオプションで、あなたのホスティングプラットフォームによって提供されることもあります。

Good to know: Vercelでは、この値がデフォルトで供給されます。他のプラットフォームでは、X-Forwarded-For ヘッダーで IP アドレスを指定します。

// Vercel によって提供されます
request.ip
// 自己ホスティング
request.headers.get('X-Forwarded-For')

geo

geo プロパティはリクエストの地理情報を含むオブジェクトです。この値はオプションで、あなたのホスティングプラットフォームによって提供されることもあります。

Good to know: 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')
// サードパーティのサービスを使用して地理情報を取得する
}