0.1.3 • Published 10 years ago

jsonresponse v0.1.3

Weekly downloads
6
License
-
Repository
github
Last release
10 years ago

jsonresponse

A JSON response helper that wraps response data with metadata about the response status.

A standard success response would have the format:

{
  "success": true,
  "error": null,
  "results": {
    id: 123,
    firstname: "Brian",
    lastname: "Mancini",
    age: 32
  }
}

An error response would have the format:

{
  "success": false,
  "error": {
    "message": "Code did something bad",
    "stack": "Error: Code did something bad\n    at Object.exports.throwError [as handle] ... "
  },
  "results": null
}

Additionally, this module will automatically call toClient method on the Object or Array that JsonResponse receives in its constructor.

##Usage

Install jsonresponse from NPM:

npm install jsonresponse;

You can then include it in a module via:

var JsonResponse = require('jsonresponse');

JsonResponse

JsonResponse constructor takes two arguments, in the standard node style (err, result).

To create a success response, pass in the results object, array, or value as the second argument:

var results = { foo: 'bar' }
var json = new JsonResponse(null, results);

To create an error response, pass in the error result as the first argument.

var error = new Error('Boom!')
var json = new JsonResponse(error);

Working with Express

If you are using express, you can manually use JsonResponse by constructing an object as shown above

app.get('/', function(req, res) {
  
  someAsyncCall(function(err, result) {
    if(err) {
      res.send(500, new JsonResponse(err));
    } else {
      res.send(new JsonResponse(null, result);
    }
  });

});

Alternatively, you can reduce boilerplate by using the express Helper that will construct the JsonResponse object for you and send the result back.

app.get('/error', function(req, res) {
  
  var jsonResponse = JsonResponse.expressHandler(res);
  makeAsyncCall(jsonResponse);

});

toClient

The toClient handling of the result argument will automatically execute for Objects or Arrays. The toClient method should return a mutated version of the object.

Take for example this object with its toClient method:

var result = {
  _id: '1234'
  __V: 0,

  toClient: function() {
    this.id = this._id;
    delete this._id;
    delete this.__V;
  }
};

The toClient method will conver _id to id and strip out the _id and __V properties for a result that looks like:

{
  id: '1234'
}

The JsonResponse object will automatically perform that conversion in its constructor.

##Contributing

You can contribute to this project by adhearing to the following standards.

Prior to contributing you should install grunt.

npm install -g grunt-cli

You can then easily validate your code:

grunt validate

Formatting

Follow these coding standards

  • Use spaces instead of tabs
  • Use 2 spaces instead of 4 spaces

Linting

Run JSHint on your code. Linting can be run via grunt:

grunt lint

Testing

Ensure proper code coverage. Tests can be run via grunt

grunt test

Commenting

Use JSDoc style commenting for methods and classes. Other comments can use standard // style comments.

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago