How to return consistent API errors — Intermediate
Use JSON error objects and appropriate status codes; centralize formatting in error middleware.
Learn: Clients and frontends depend on predictable error JSON. Pick a shape (e.g. { error: string }) and use it for validation, not found, and server errors.
Supplementary examples
errorHandler shape
function errorHandler(err, req, res, next) {
const status = err.status || 500;
res.status(status).json({
error: err.message,
...(process.env.NODE_ENV === "development" && { stack: err.stack }),
});
}Course example
// Validation
res.status(400).json({ error: "username is required" });
// Not found (in service or controller)
const err = new Error("User not found");
err.status = 404;
throw err;
// errorHandler sends: { error: err.message }
Additional references & examples
- Express error handling
Central error middleware and status codes.
- HTTP status codes (MDN)
When to use 200, 201, 204, 400, 404, 500, and related codes.