Next.js 40: Route Handlers — Segmentos dinámicos y NextRequest/NextResponse
easy⏱ 5 mincoursenextjs
params + nextUrl.searchParams
La carpeta [id] captura un segmento dinámico, disponible como params.id. NextRequest extiende el Request estándar de la Web con nextUrl, una URL ya parseada cuyo .searchParams es un URLSearchParams normal — perfecto para leer ?verbose=true sin parsear la query string a mano.
// app/api/todos/[id]/route.ts
import { NextRequest, NextResponse } from 'next/server';
export async function GET(
request: NextRequest,
{ params }: { params: { id: string } }
) {
const verbose = request.nextUrl.searchParams.get('verbose');
const todo = findTodo(params.id);
if (!todo) {
return NextResponse.json({ error: 'Not found' }, { status: 404 });
}
return NextResponse.json(verbose ? { ...todo, verbose: true } : todo);
}
Devuelve el código de estado correcto
Elige un id del selector (incluyendo uno que no existe) y activa ?verbose=true, luego haz clic en el botón. El panel de respuesta debe mostrar 404 para un id inexistente y 200 con los campos extra de verbose cuando la bandera está activa.
Los códigos de estado son parte del contrato
Quienes consumen tu API confían en el código de estado tanto como en el cuerpo: 200 para éxito, 201 para creado, 404 para no encontrado, 400 para una petición inválida. NextResponse.json(data, { status }) te deja fijarlo explícitamente en vez de usar siempre 200 por defecto.