Menu

route.js

路由处理程序允许你使用 Web RequestResponse API 为指定路由创建自定义请求处理程序。

HTTP 方法

路由文件允许你为指定路由创建自定义请求处理程序。支持以下 HTTP 方法GETPOSTPUTPATCHDELETEHEADOPTIONS

route.ts
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.js
export async function GET(request) {}
 
export async function HEAD(request) {}
 
export async function POST(request) {}
 
export async function PUT(request) {}
 
export async function DELETE(request) {}
 
export async function PATCH(request) {}
 
// 如果未定义 `OPTIONS`,Next.js 将自动实现 `OPTIONS` 并根据路由处理程序中定义的其他方法设置适当的 Response `Allow` 头。
export async function OPTIONS(request) {}

值得注意的是:路由处理程序仅在 App Router 中可用。你不需要同时使用 API 路由 (pages) 和路由处理程序 (app),因为路由处理程序应该能够处理所有用例。

参数

request (可选)

request 对象是一个 NextRequest 对象,它是 Web Request API 的扩展。NextRequest 使你能够更好地控制传入请求,包括轻松访问 cookies 和扩展的、已解析的 URL 对象 nextUrl

context (可选)

app/dashboard/[team]/route.ts
type Params = {
  team: string;
};
 
export async function GET(request: Request, context: { params: Params }) {
  const team = context.params.team; // '1'
}
 
// 根据你的路由参数定义 params 类型 (参见下表)
app/dashboard/[team]/route.js
 
export async function GET(request, context: { params }) {
  const team = context.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。这使你能够轻松设置 cookie、头部、重定向和重写。查看 API 参考

版本历史

版本变更
v15.0.0GET 处理程序的默认缓存从静态更改为动态
v13.2.0引入路由处理程序