1.2.12 • Published 10 years ago

rest-req-res v1.2.12

Weekly downloads
2
License
ISC
Repository
github
Last release
10 years ago

REST Request Response

REST API helper, json and xml format, cors, methods override

npm package

Installing

Installing of NPM package

npm install rest-req-res

How to use

Beginning

var express = require('express');
var app = express();
var router = express.Router();
var config = require('./config.json');
var rest = require('rest-req-res');
config.errors = require('./errors.json');
app.set('config', config);
rest(app);

Success response

router.get('/success', function(req, res){
  res.success({
    resultField1: 'value1',
    resultField2: 'value2'
  }, 200, {
    metaField1: 'value1',
    metaField2: 'value2'
  });
});

Error response

router.get('/error', function(req, res) {
  res.error('CONFLICT', {
    details1: 'value1',
    details2: 'value2'
  });
});

Mounting

app.use('/'+config.api.version, router);
app.listen(config.app.port, config.app.host);

Config example ./config.json

{
  "app": {
    "port": 8080,
    "host": "127.0.0.1"
  },
  "api": {
    "version": "v1",
    "origin": ["Test", null]
  },
  "cors": {
    "maxAge": 86400,
    "allowHeaders": [
      "Content-Type", "Accept", "Origin", "X-HTTP-Method-Override", "User-Agent", "Authorization",
      "Cache-Control", "Keep-Alive", "X-Requested-With", "If-Modified-Since"
    ],
    "allowMethods": ["GET", "POST", "PUT", "DELETE", "OPTIONS"]
  }
}

Errors example ./errors.json

{
  "BAD_REQUEST": {"code": 400, "status": 400, "message": "Bad Request"},
  "UNAUTHORIZED": {"code": 401, "status": 401, "message": "Unauthorized"},
  "FORBIDDEN": {"code": 403, "status": 403, "message": "Forbidden"},
  "NOT_FOUND": {"code": 404, "status": 404, "message": "Not Found"},
  "METHOD_NOT_ALLOWED": {"code": 405, "status": 405, "message": "Method Not Allowed"},
  "REQUEST_TIMEOUT": {"code": 408, "status": 408, "message": "Request Timeout"},
  "CONFLICT": {"code": 409, "status": 409, "message": "Conflict"},
  "INTERNAL_SERVER_ERROR": {"code": 500, "status": 500, "message": "Internal Server Error"},
  "SERVICE_UNAVAILABLE": {"code": 503, "status": 503, "message": "Service Unavailable"},
  "UNKNOWN_ERROR": {"code": 520, "status": 520, "message": "Unknown Error"}
}

Method Override

Request headers

X-HTTP-Method: PUT
X-HTTP-Method-Override: PUT
X-Method-Override: PUT

URL query parameter

?httpMethod=put

If POST http://url?httpMethod=put then handle as PUT http://url

Request Content-Type header

Supported Content-Type

Content-Type: application/xml
Content-Type: application/json

If Content-Type: application/xml and body

<?xml version="1.0" encoding="UTF-8"?><test>1</test>

then server will parse request body as

{
  "test": "1"
}

Request Accept header

Supported Accept

Accept: application/xml
Accept: application/json

URL query parameter

?responseFormat=xml
?responseFormat=json

Response status code

URL query parameter

?forcedResponseStatus=200

Development

Run tests

npm run test

Run watch files and autostart test

npm run watch

License

ISC