response-body-builder v1.0.2
response-body-builder
Response Builder is a middleware that helps build you response bodies for APIs.
Installation
npm install response-body-builder
Usage
Basic Usage
const { ResponseBuilder, ResponseBuilderMiddleware } = require("response-body-builder");
const express = require("express");
const app = express();
app.use(ResponseBuilderMiddleware);
app.get("/ping", (req, res) => {
const response = new ResponseBuilder()
.set("ping", "Pong!");
res.sendResponse(response);
// {
// "ping": "Pong!",
// "httpCode": 200,
// "httpCodeMessage": "Successful."
// }
});
Advanced Usage Example
const { ResponseBuilder } = require("response-body-builder");
const wait = require("util").promisify(setTimeout);
(async function () {
const response = await (
new ResponseBuilder()
.set("test", "hello")
.setPromise("bool", fakePromiseValue(500))
.mergePromise(fakePromiseObject(200))
.setCode(500)
.cast()
);
const syncResponse = new ResponseBuilder()
.set("test", "hello")
.setPromise("bool", fakePromiseValue(500))
.mergePromise(fakePromiseObject(200))
.setCode(500)
.castSync();
console.log(response);
console.log(syncResponse); // Ignore everything promise-related.
// Output:
// {
// test: 'hello',
// httpCode: 500,
// httpCodeMessage: 'Internal server error.',
// bool: false,
// two: 2,
// four: 4
// }
// {
// test: 'hello',
// httpCode: 500,
// httpCodeMessage: 'Internal server error.'
// }
}());
async function fakePromiseValue (time) {
await wait(time);
return (Math.random() * 100 < 50 ? true : false);
}
async function fakePromiseObject (time) {
await wait(time);
return {
two: 2,
four: 4
}
}
Documentation
1) .set(key, value)
(Returns this
)
Adds key-value pair to the body object.
2) .setAsync(key, promise)
(Returns this
)
Starts to resolve the promise right away ,without adding it to queue, once done, it adds it to the body object as a key-value pair.
If promise doesn't resolve until .cast()
or .castSync()
are called, the result of the promise will not be included into the body object, not recommended to use.
3) .mergePromise(promise)
(Returns this
)
Queues the promise into the mergePromises queue. (Upon .cast()
all the promises queued are resolved and their value properties are merged into the body object.)
4) .setPromise(key, promise)
(Returns this
)
Queues the promise into the keyPromises queue. (Upon .cast()
all promises queued are resolved and added to the body object as a key-resovled value pair.)
5) .merge(object)
(Returns this
)
Copies all of the properties of object
into the body object.
6) .cast([useCode] = true)
(Returns Promise<Object>
)
useCode
whether or not the status code and the message relevant to it to be inserted into the body object.
Resolves all of the promise queues into the body object and returns it.
7) .castSync([useCode = true])
(Return Object
)
useCode
whether or not the status code and the message relevant to it to be inserted into the body object.
Returns the body object, skipping to resolve any of the queues.
8) .setCode(httpCode[, message])
Sets the status code of the request. If message
is not provided, the default message for the will be used for supported codes (or undefined for non-supported status codes).
9) Supported Http Code Messages
"HTTP_200": "Successful.",
"HTTP_204": "No content.",
"HTTP_400": "Bad request.",
"HTTP_401": "Unauthorized.",
"HTTP_403": "Forbidden.",
"HTTP_404": "Not found.",
"HTTP_429": "Too many requests.",
"HTTP_500": "Internal server error.",
"HTTP_503": "Service unavailable."