5 min read
ā¢Question 16 of 47mediumHow to create API routes in Next.js?
Building backend endpoints with Route Handlers.
What You'll Learn
- Route Handlers
- HTTP methods
- Request/Response handling
Basic Route Handler
code.txtTSX
// app/api/users/route.ts
import { NextResponse } from 'next/server';
export async function GET() {
const users = await db.user.findMany();
return NextResponse.json(users);
}
export async function POST(request: Request) {
const body = await request.json();
const user = await db.user.create({ data: body });
return NextResponse.json(user, { status: 201 });
}Dynamic Routes
code.txtTSX
// app/api/users/[id]/route.ts
export async function GET(
request: Request,
{ params }: { params: { id: string } }
) {
const user = await db.user.find(params.id);
if (!user) {
return NextResponse.json(
{ error: 'Not found' },
{ status: 404 }
);
}
return NextResponse.json(user);
}
export async function DELETE(
request: Request,
{ params }: { params: { id: string } }
) {
await db.user.delete(params.id);
return new Response(null, { status: 204 });
}Query Parameters
code.txtTSX
export async function GET(request: Request) {
const { searchParams } = new URL(request.url);
const page = searchParams.get('page') || '1';
const limit = searchParams.get('limit') || '10';
const users = await db.user.findMany({
skip: (parseInt(page) - 1) * parseInt(limit),
take: parseInt(limit),
});
return NextResponse.json(users);
}Headers & Cookies
code.txtTSX
import { cookies, headers } from 'next/headers';
export async function GET() {
const cookieStore = cookies();
const token = cookieStore.get('token');
const headersList = headers();
const auth = headersList.get('authorization');
return NextResponse.json({ token, auth });
}