Action | Type | Resolved On |
|---|---|---|
| API Response Consistency | refactoring | - - - |
API routes have inconsistent error response formats. Some return structured JSON with proper HTTP status codes, while others return plain text responses. This inconsistency makes client-side error handling more difficult.
Used in api/new/goal.ts and api/new/backlog.ts:
return new Response(JSON.stringify({ error: "Owner is required" }), {
status: 400,
headers: { "Content-Type": "application/json" },
});
Used in api/open/task.ts, api/close/task.ts, api/update/backlog.ts:
return new Response("Task is required", { status: 400 });
src/pages/api/new/goal.ts - JSON format ✅src/pages/api/new/backlog.ts - JSON format ✅src/pages/api/open/task.ts - Plain text ❌src/pages/api/close/task.ts - Plain text ❌src/pages/api/open/goal.ts - Plain text ❌src/pages/api/close/goal.ts - Plain text ❌src/pages/api/open/idea.ts - Plain text ❌src/pages/api/close/idea.ts - Plain text ❌src/pages/api/update/backlog.ts - Plain text ❌Create a unified response utility in src/lib/api-response.ts for consistent JSON responses across all API routes.
// Success responses
export function successResponse(data?: object, message?: string): Response
// Error responses
export function errorResponse(message: string, status: number): Response
// Common HTTP status code helpers
export function badRequest(message: string): Response
export function notFound(message: string): Response
export function serverError(message?: string): Response
export function unauthorized(message?: string): Response
// Before
return new Response("Task is required", { status: 400 });
// After
return badRequest("Task is required");
// Before
return new Response(JSON.stringify({ error: "Owner is required" }), {
status: 400,
headers: { "Content-Type": "application/json" },
});
// After
return badRequest("Owner is required");
{ success: boolean, data?: any, error?: string, message?: string }Content-Type: application/json headerssrc/pages/api/new/goal.tssrc/pages/api/new/backlog.tssrc/pages/api/open/*.tssrc/pages/api/close/*.tssrc/pages/api/update/*.ts