@stickerbam/http-responses
v1.1.0
Published
Module to standarise Http Response objects across APIs
Downloads
2
Readme
http-responses
Description
This is an attempt to standarize microservices schemas and provide better CORS headers handling.
Disclaimer: A lot of tests cases to add.
Install
npm install @stickerbam/http-responses
Configuration
Create a file named .cors
in the root directory of your project. This file must be deployed with your code.
Default origin regex: `.*'
{
"allowedOriginsPattern": "a regex here to match authorized hosts"
}
Example:
{
"allowedOriginsPattern": "(http(s)?:\/\/)?(([a-zA-Z0-9-]*)\\.)*(google\\.com)$"
}
Note: Use back-slash to escape invalid json charactes in your origin regex.
Using this module
- Import module
const HttpResponse = require('@stickerbam/http-responses');
- Create an instance of the imported module and pass optional, strongly but recommended, request headers object
const httpResponseCtrl = HttpResponse(reqHeaders)
- Call
response(statusCode, body, headers)
method for every response object required. Where:
statusCode: <integer, valid HTTP response status code> body: <Object, if body is an instance of class Error then the error message is returned int he body> headers: <Optional, object containing case sensitive headers to override defaults>
const HttpResponse = require('@stickerbam/http-responses');
let reqHeaders = {'Origin': 'api.ddddd.com'};
let response = new HttpResponse(reqHeaders);
console.log(response.response(200))
Output:
{ statusCode: 200,
headers:
{ 'Access-Control-Allow-Origin': 'api.ddddd.com',
'Access-Control-Max-Age': 86400,
'Content-Type': 'application/json',
Vary: 'Origin' },
body: '{"data":[]}' }
Response Schema
{ statusCode: <Integer, a valid status code>,
headers: <Object, object containing response headers>,
body: <String, serialized response body>
}
Note: Serialize
body
will always be encapsulated in two mutually exclusive properties, data and message:
- message: error message in the instance of Error class passed in the body argument
- data: serialized data when no errors are passed
Response CORS
For this module to compute CORS headers, it must be passed the request Headers. The CORS headers will be generated based on the allowed origins that match the pattern in the .config
file, in combination with the request headers.
Use cases:
- when no request headers are passed to the response instance, CORS headers will allow all origins
*
. - when no config is used, and request headers are passed, CORS will allow Origin in the request headers
- when config is used, and request headers are passed, CORS will allow Origin if it matches pattern, or will return empty