How do you create API endpoints in Next.js?
Assesses fundamental understanding of Next.js conventions, runtime behavior, and memory/performance considerations.
Hiring managers look for precision, avoidance of ambiguous jargon, and ability to explain trade-offs under real production conditions.
Next.js provides built-in serverless backend capabilities for creating REST or GraphQL endpoints:
### 1. In App Router (Route Handlers - Modern):
Create a route.ts (or route.js) inside any folder in the app directory. Export named HTTP verb functions (GET, POST, PUT, DELETE, PATCH):
// app/api/users/route.ts
import { NextResponse } from 'next/server';
export async function GET(request: Request) {
const users = await db.user.findMany();
return NextResponse.json(users);
}
export async function POST(request: Request) {
const body = await request.json();
const newUser = await db.user.create({ data: body });
return NextResponse.json(newUser, { status: 201 });
}
### 2. In Pages Router (API Routes - Legacy):
Create files inside pages/api/ exporting a default handler:
// pages/api/users.js
export default async function handler(req, res) {
if (req.method === 'GET') {
res.status(200).json({ message: 'Success' });
} else {
res.status(405).end();
}
}
Candidate Response Strategy & Interview Tips
- Start with a concise one-sentence summary: Deliver a direct, confident answer first before expanding into nuances.
- Demonstrate real-world trade-offs: Discuss where this approach excels and when you would avoid it in production systems.
- Discuss complexity & edge cases: Proactively explain time/space complexity or boundary conditions (null values, scale limits).
- Prepare for interviewer follow-ups: Technical hiring panels frequently probe deeper into concurrency, backward compatibility, or alternative libraries.