route.js

路由處理器 (Route Handlers) 允許您使用 Web RequestResponse API 為指定路由建立自訂請求處理器。

HTTP 方法

路由檔案允許您為指定路由建立自訂請求處理器。支援以下 HTTP 方法GETPOSTPUTPATCHDELETEHEADOPTIONS

export async function GET(request: Request) {}

export async function HEAD(request: Request) {}

export async function POST(request: Request) {}

export async function PUT(request: Request) {}

export async function DELETE(request: Request) {}

export async function PATCH(request: Request) {}

// 如果未定義 `OPTIONS`,Next.js 會自動實作 `OPTIONS` 並根據路由處理器中定義的其他方法設定適當的 Response `Allow` 標頭。
export async function OPTIONS(request: Request) {}

須知:路由處理器 (Route Handlers) 僅在 app 目錄內可用。您不需要同時使用 API 路由 (pages) 和路由處理器 (app),因為路由處理器應能處理所有使用案例。

參數

request (選填)

request 物件是一個 NextRequest 物件,它擴展了 Web Request API。NextRequest 讓您能進一步控制傳入的請求,包括輕鬆存取 cookies 和擴展解析後的 URL 物件 nextUrl

context (選填)

app/dashboard/[team]/route.js
export async function GET(request, context: { params }) {
  const team = params.team // '1'
}

目前,context 的唯一值是 params,它是一個包含當前路由的動態路由參數的物件。

範例URLparams
app/dashboard/[team]/route.js/dashboard/1{ team: '1' }
app/shop/[tag]/[item]/route.js/shop/1/2{ tag: '1', item: '2' }
app/blog/[...slug]/route.js/blog/1/2{ slug: ['1', '2'] }

NextResponse

路由處理器 (Route Handlers) 可以透過回傳 NextResponse 物件來擴展 Web Response API。這讓您可以輕鬆設定 cookies、標頭、重新導向和改寫。查看 API 參考文件

版本歷史

版本變更
v13.2.0引入路由處理器 (Route Handlers)。

On this page