era

era

REST adapter for express

Showing:

Popularity

Downloads/wk

3

GitHub Stars

0

Maintenance

Last Commit

8yrs ago

Contributors

1

Package

Dependencies

0

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

era

REST adapter for express.

  • Current version: 0.0.3

Important

  • Package under heavy modifications.
  • Authentication was disabled from version > 0.0.2.
  • Default behavior

Installation

$ npm install -g era

About

This package is intended for fast development of REST APIs.

Quick start

var era = require('era');

var Api = era.Api;
var Authentication = era.Authentication;
var ModelResource = era.ModelResource;

Declare a new resource

function UserResource (model, authentication) {
  ModelResource.call(this, model, authentication);
}
util.inherits(UserResource, ModelResource);

and a new api

var api = new Api('api', 'v1');

and register your new resource:

api.register(new UserResource(models.User, Authentication));

Now, for this resource you have working CRUD functionality and the urls /api/v1/user and /api/v1/user/:id are auto generated. The urls are base on the resource name, so the name has two parts, the model name, in our case is User and the word Resource, which is a mandatory word. If you want to change behavior of the resource you have to override get, post, put and delete methods.

Routing with express

The api object is the one we built before.

var express = require('express');
var app = express();

app.use(express.logger());
app.use(express.compress());
app.use(express.bodyParser());
app.use(app.router);

api.adapter(app);

Authentication

Authentication have no rules so you'll have to extend it and implement isAuthenticated for setting your own rules.

Here is an example:

function ApiKeyAuth() {
  Authentication.call(this);
};
util.inherits(ApiKeyAuth, Authentication);
ApiKeyAuth.prototype.isAuthenticated = function (req, res, next) {
  var apikey = req.query.apikey;
  if (apikey) {
    models.User.findOne({'apikey': apikey}).exec(function(err, obj) {
      if (obj) {
        next();
      }
      else {
        res.send(401);
      }
    });
  }
  else {
    res.send(401);
  }
}

Model

The default CRUD behavior of the resource is built on top of mongoose. If you use something else you have to implement get, post, put and delete methods of your resource, so mongoose driver is not a requirement.

Working with express

Everything you'll extend with era is a middleware for express.

License

MIT

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial