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、存在しなければ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の検索パラメータ。

注: Pages Routerの国際化プロパティはApp Routerでは使用できません。App Routerでの国際化について詳しく学んでください。

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')
  // サードパーティサービスを使用して地理情報を検索
}