A lightweight and flexible package to help organize and standardize responses from your Express.js API.
Install the package using npm:
npm install @ali-hajeh/response-handler
Import the ResponseHandler
class in your Express.js application:
import ResponseHandler from "@ali-hajeh/response-handler";
To use the ResponseHandler, you need to set it up as middleware in your Express application:
import express from "express";
import ResponseHandler from "@ali-hajeh/response-handler";
const app = express();
// Apply the middleware
app.use(ResponseHandler.middleware());
Once the middleware is set up, the following methods will be available on the res
object in your route handlers:
-
success
: Send a success response -
badRequest
: Send a bad request response -
joiValidationError
: Send a response for Joi validation errors -
notFound
: Send a not found response -
serverError
: Send a server error response
import express from "express";
import ResponseHandler from "@ali-hajeh/response-handler";
const app = express();
// Apply the middleware
app.use(ResponseHandler.middleware());
app.get("/api/users", (req, res) => {
// Your logic here
const users = [{ id: 1, name: "John Doe" }];
res.success({
data: users,
message: "Users retrieved successfully",
});
});
app.use((req, res) => {
res.notFound({ message: "Route not found" });
});
app.use((err, req, res, next) => {
res.serverError({ message: err.message });
});
Send a success response.
-
options
:-
message
(optional): Success message (default: "Success") -
data
(optional): Data to be sent in the response -
statusCode
(optional): HTTP status code (default: 200)
-
Send a bad request response.
-
options
:-
message
(optional): Error message (default: "Bad Request") -
errors
(optional): Error details -
statusCode
(optional): HTTP status code (default: 400)
-
Send a response for Joi validation errors.
-
error
: Joi ValidationError object -
options
:-
statusCode
(optional): HTTP status code (default: 400)
-
Send a not found response.
-
options
:-
message
(optional): Error message (default: "Not Found") -
errors
(optional): Error details -
statusCode
(optional): HTTP status code (default: 404)
-
Send a server error response.
-
options
:-
message
(optional): Error message (default: "Internal Server Error") -
errors
(optional): Error details -
statusCode
(optional): HTTP status code (default: 500)
-
You can add custom response methods using the ResponseHandler.addCustomMethod
function:
ResponseHandler.addCustomMethod<[data: any, options?: { flag?: boolean }]>(
"customResponse",
function (data, options = {}) {
return this.status(200).json({ custom: true, data, ...options });
}
);
// Usage in a route
app.get("/custom", (req, res) => {
res.customResponse({ foo: "bar" }, { flag: true });
});
This package is written in TypeScript and includes type definitions. It exports a ResponseType
interface that you can use to type your responses:
import { ResponseType } from "@ali-hajeh/response-handler";
const response: ResponseType = {
success: true,
message: "Success",
data: { id: 1 },
statusCode: 200,
};
Contributions are welcome! Please feel free to submit a Pull Request or an Issue.
This project is licensed under the ISC License.