Simplifying API Responses with Node.js: Introducing a Response Service

Seun Abilawon
2 min readJul 12, 2023

--

In the world of APIs, it’s important to be able to return consistent and meaningful responses to your users. This is where a response service can come in handy.

A response service is a piece of code that helps you to format and return responses from your APIs. It can include things like status codes, error messages, and data payloads.

The code snippet below shows a simple response service that you can use in your own APIs.

const responseService = {
statusCodes: {
ok: 200,
created: 201,
accepted: 202,
noContent: 204,
badRequest: 400,
unauthorized: 401,
forbidden: 403,
notFound: 404,
internalServerError: 500,
serviceUnavailable: 503,
},

success(message, data) {
return {
success: true,
message,
data,
status: this.statusCodes.ok,
};
},

error(message, error) {
return {
success: false,
message,
error,
status: this.statusCodes.badRequest,
};
},

unauthorizedError(message) {
return {
success: false,
message,
error: "Unauthorized",
status: this.statusCodes.unauthorized,
};
},

forbiddenError(message) {
return {
success: false,
message,
error: "Forbidden",
status: this.statusCodes.forbidden,
};
},

notFoundError(message) {
return {
success: false,
message,
error: "Not Found",
status: this.statusCodes.notFound,
};
},

internalServerError(message) {
return {
success: false,
message,
error: "Internal Server Error",
status: this.statusCodes.internalServerError,
};
},

serviceUnavailableError(message) {
return {
success: false,
message,
error: "Service Unavailable",
status: this.statusCodes.serviceUnavailable,
};
},
};

module.exports = responseService;

Usage Example:

To showcase how the response service can be utilized, let’s consider an example where you want to send a successful response containing user data:

const responseService = require('./responseService');

function getUserData(userId) {
// Retrieve user data from the database
const userData = {
id: userId,
name: 'John Doe',
email: 'johndoe@example.com',
};

if (userData) {
// Return success response
return responseService.success('User data retrieved successfully', userData);
} else {
// Return not found error response
return responseService.notFoundError('User not found');
}
}

// Usage
const userId = '12345';
const result = getUserData(userId);

console.log(result);

In this example, we import the response service module and define a getUserData function that retrieves user data from a database based on a given userId. If the user data is found, a success response is generated using responseService.success with a custom message and the retrieved user data. Otherwise, if the user data is not found, a not found error response is returned using responseService.notFoundError with an appropriate error message.

By utilizing the response service, you can consistently structure and return responses from your APIs, making your code more maintainable and user-friendly.

Conclusion

By integrating this response service into your API development workflow, you can ensure greater consistency and reliability in your application’s responses. While the code snippet presented here serves as an excellent starting point, it can be customized further to cater to the specific requirements of your APIs. Implementing a response service will streamline your development process and enhance the user experience.

I hope you find this response service valuable in your API development journey.

--

--

Seun Abilawon

Fullstack engineer | AI Dev | Retail trader and developer