route.js
Los Route Handlers (Manejadores de Ruta) permiten crear manejadores de solicitud personalizados para una ruta específica utilizando las APIs web Request y Response.
Métodos HTTP
Un archivo route permite crear manejadores de solicitud personalizados para una ruta dada. Se admiten los siguientes métodos HTTP: GET
, POST
, PUT
, PATCH
, DELETE
, HEAD
y OPTIONS
.
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) {}
// Si `OPTIONS` no está definido, Next.js implementará automáticamente `OPTIONS` y establecerá el encabezado `Allow` apropiado en la Response según los otros métodos definidos en el manejador de ruta.
export async function OPTIONS(request: Request) {}
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) {}
// Si `OPTIONS` no está definido, Next.js implementará automáticamente `OPTIONS` y establecerá el encabezado `Allow` apropiado en la Response según los otros métodos definidos en el manejador de ruta.
export async function OPTIONS(request) {}
Importante: Los Route Handlers solo están disponibles dentro del directorio
app
. No es necesario usar API Routes (pages
) y Route Handlers (app
) juntos, ya que los Route Handlers deberían poder manejar todos los casos de uso.
Parámetros
request
(opcional)
El objeto request
es un objeto NextRequest, que es una extensión de la API web Request. NextRequest
brinda mayor control sobre la solicitud entrante, incluyendo acceso sencillo a cookies
y un objeto URL extendido y parseado nextUrl
.
context
(opcional)
type Params = {
team: string
}
export async function GET(request: Request, context: { params: Params }) {
const team = context.params.team // '1'
}
// Define el tipo de params según los parámetros de tu ruta (ver tabla abajo)
export async function GET(request, context: { params }) {
const team = context.params.team // '1'
}
Actualmente, el único valor de context
es params
, que es un objeto que contiene los parámetros de ruta dinámica para la ruta actual.
Ejemplo | URL | params |
---|---|---|
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
Los Route Handlers pueden extender la API Response web devolviendo un objeto NextResponse
. Esto permite configurar fácilmente cookies, encabezados, redirecciones y reescrituras. Ver la referencia de API.
Historial de versiones
Versión | Cambios |
---|---|
v13.2.0 | Se introducen los Route Handlers. |