Next.js API Routes and Route Handlers
Ad
Building APIs in Next.js
Next.js lets you build backend API endpoints alongside your frontend — no separate server needed. The App Router uses Route Handlers.
A Route Handler
// app/api/users/route.ts
export async function GET() {
const users = await db.getUsers();
return Response.json(users);
}
export async function POST(request: Request) {
const body = await request.json();
const user = await db.createUser(body);
return Response.json(user, { status: 201 });
}
Dynamic Routes
// app/api/users/[id]/route.ts
export async function GET(req, { params }) {
const user = await db.getUser(params.id);
return Response.json(user);
}
Supported Methods
Export functions named GET, POST, PUT, PATCH, DELETE — each handles that HTTP method.
FAQs
Route Handlers vs Server Actions?
Use Route Handlers for public APIs; Server Actions for form mutations. More in our Next.js guides.
Can I read query params?
Yes — via new URL(request.url).searchParams.
