Express API Reference
Complete API reference for Express integration.
Quick Setup
typescript
import { quickSetup } from '@amit-kandar/response-handler';
const { middleware, errorHandler } = quickSetup(config);
app.use(middleware);
app.use(errorHandler); // Must be lastEnhanced Response Methods
All methods are available on the Express response object after applying middleware.
Success Responses
res.ok(data, message)
typescript
res.ok({ users: [1, 2, 3] }, 'Users retrieved successfully');
// Status: 200res.created(data, message)
typescript
res.created({ id: 123, name: 'John' }, 'User created');
// Status: 201res.accepted(data, message)
typescript
res.accepted({ jobId: 456 }, 'Job queued for processing');
// Status: 202res.noContent(message)
typescript
res.noContent('User deleted successfully');
// Status: 204Error Responses
res.badRequest(error, message)
typescript
res.badRequest({ field: 'email' }, 'Invalid email format');
// Status: 400res.unauthorized(error, message)
typescript
res.unauthorized(null, 'Authentication required');
// Status: 401res.forbidden(error, message)
typescript
res.forbidden({ role: 'user' }, 'Admin access required');
// Status: 403res.notFound(error, message)
typescript
res.notFound({ id: 123 }, 'User not found');
// Status: 404res.conflict(error, message)
typescript
res.conflict({ email: 'john@example.com' }, 'Email already exists');
// Status: 409res.unprocessableEntity(error, message)
typescript
res.unprocessableEntity({ field: 'age' }, 'Age must be a number');
// Status: 422res.tooManyRequests(error, message)
typescript
res.tooManyRequests({ limit: 100 }, 'Rate limit exceeded');
// Status: 429res.internalServerError(error, message)
typescript
res.internalServerError(error, 'Database connection failed');
// Status: 500Generic Methods
res.respond(statusCode, data, message)
typescript
res.respond(418, { teapot: true }, "I'm a teapot");res.error(error, statusCode)
typescript
res.error(new Error('Something went wrong'), 500);res.paginate(data, pagination, message)
typescript
res.paginate(
users,
{
page: 1,
limit: 10,
total: 100,
totalPages: 10,
},
'Users retrieved',
);Enhanced Request Properties
The middleware adds these properties to the request object:
typescript
interface EnhancedRequest extends Request {
requestId: string; // Unique request identifier
startTime: number; // Request start timestamp
context: any; // Request-specific context
}Response Format
All responses follow this consistent format:
typescript
interface ApiResponse {
success: boolean;
data?: any; // For successful responses
message?: string; // Human-readable message
error?: ErrorInfo; // For error responses
meta?: ResponseMeta; // Metadata (request ID, timing, etc.)
}Error Handling
The error handler automatically catches and formats errors:
typescript
app.use((req, res, next) => {
throw new Error('Something went wrong');
// Automatically becomes formatted error response
});File Downloads
Enhanced file download methods:
typescript
res.downloadFile('/path/to/file.pdf', 'document.pdf');Middleware Options
typescript
const { middleware } = quickSetup({
// Adds request ID to response headers
responses: { includeRequestId: true },
// Enable CORS headers
security: { corsHeaders: true },
// Custom error field filtering
security: {
allowedErrorFields: ['message', 'type', 'code'],
},
});