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) {}

须知:路由处理器仅在 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

路由处理器可以通过返回 NextResponse 对象来扩展 Web Response API。这使您可以轻松设置 cookies、headers、重定向和重写。查看 API 参考

版本历史

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

On this page