typescriptbeginner

Route Handler Response Helpers

Common response patterns for Next.js route handlers with proper status codes and headers.

typescript
// app/api/helpers.ts
import { NextResponse } from 'next/server';

export function jsonOk<T>(data: T) {
  return NextResponse.json(data, { status: 200 });
}

export function created<T>(data: T) {
  return NextResponse.json(data, { status: 201 });
}

export function noContent() {
  return new NextResponse(null, { status: 204 });
}

export function badRequest(message: string) {
  return NextResponse.json({ error: message }, { status: 400 });
}

export function unauthorized() {
  return NextResponse.json({ error: 'Authentication required' }, { status: 401 });
}

export function notFound(resource = 'Resource') {
  return NextResponse.json({ error: `${resource} not found` }, { status: 404 });
}

// Usage: app/api/posts/[id]/route.ts
import { jsonOk, notFound, badRequest } from '../helpers';

export async function GET(
  _req: Request,
  { params }: { params: Promise<{ id: string }> }
) {
  const { id } = await params;
  const post = await db.post.findUnique({ where: { id } });
  if (!post) return notFound('Post');
  return jsonOk(post);
}

Use Cases

  • API route handlers
  • consistent error responses
  • REST APIs

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.