open-router

1.0.1 • Public • Published

open-router

==================

A router for restify or framework based on restify.

Build status codecov

Node version

 >= 6 

Usage

npm install open-router --save

Example router definition

var Router = require('open-router');
 
/**
 * @return router instance
 *
 * @params server
 *     restify.createServer() return result
 * @params controllers
 *     All controllers object,
 *      {
 *        controllerName: {
 *          methodName: method
 *        }
 *      }
 * @params defaultCtl
 *    {
 *      list: function() {},
 *      modify: function() {},
 *      detail: function() {},
 *      remove: function() {},
 *      add: function() {} 
 *    }
 * @params opts
 *          apis The uri list all rest api;
 */
var router = Router(server, controllers, defaultCtl, opts);
 
//or chainning call, without argument order.
// var router = Router
//                .server(server)
//                .ctls(controllers)
//                .defaults(defaultCtl)
//                .opts(opts)
//                .exec()
 

Methods

router.get(routePath, actionPath)

HTTP.verb GET

Equivalent to

GET: /routePath

Arguments

  • routePath - uri ,eg /users/:id or /users/:userId/books
  • actionPath - controllerMethodPath,eg.user#detail { user: detail: function() {} }

Example

router.get('/users', 'user#list'); When request `/users` by GET, user controller's `list` method will be called.
 

router.put(routePath, actionPath)

HTTP.verb PUT

Equivalent to

PUT: /routePath

Arguments

  • routePath - uri ,eg /users/:id or /users/:userId/books
  • actionPath - controllerMethodPath,eg.user#detail { user: detail: function() {} }

Example

router.get('/users/:id', 'user#modify'); When request `/users/:id` by PUT, user controller's `modify` method will be called.
 

router.patch(routePath, actionPath)

HTTP.verb PATCH

Equivalent to

PATCH: /routePath

router.post(routePath, actionPath)

HTTP.verb POST

Equivalent to

POST: /routePath

router.del(routePath, actionPath)

HTTP.verb DELETE

Equivalent to

DELETE: /routePath

router.resource(name, routePath)

HTTP.verb DELETE or GET or PATCH or PUT

Equivalent to

POST: /routePath PUT: /routePath/:id PATCH: /routePath/:id GET: /routePath GET: /routePath/:id DELETE: /routePath/:id

Arguments

  • name - Response's name. eg: user, book, order
  • routePath - optional, uri

Example

router.resource('user')
 
// Equivalent to
// router.get('/users', 'user#list');
// router.get('/users/:id', 'user#detail');
// router.put('/users/:id', 'user#modify');
// router.patch('/users/:id', 'user#modify');
// router.delete('/users/:id', 'user#remove');
// router.post('/users', 'user#add');

router.model(name, routePath)

HTTP.verb DELETE or GET or PATCH or PUT

Equivalent to

PUT: /routePath PATCH: /routePath GET: /routePath DELETE: /routePath

Arguments

  • name - Response's name. eg: user, book, order
  • routePath - optional, uri

Example

router.model('user')
 
// Equivalent to
// router.get('/users/:id', 'user#detail');
// router.put('/users/:id', 'user#modify');
// router.patch('/users/:id', 'user#modify');
// router.delete('/users/:id', 'user#remove');
 
router.model('user', '/systems/users')
 
// Equivalent to
// router.get('/systems/users/:id', 'user#detail');
// router.put('/systems/users/:id', 'user#modify');
// router.patch('/systems/users/:id', 'user#modify');
// router.delete('/systems/users/:id', 'user#remove');

router.collection(name, routePath)

HTTP.verb DELETE or GET or PATCH or PUT

Equivalent to

// List the resource GET: /routePath // Create a resource POST: /routePath

Arguments

  • name - Response's name. eg: user, book, order
  • routePath - optional, uri
  • parent - optional, The resource's parent resource name

Example

router.collection('book', null, 'user')
 
// Equivalent to
 
// router.get('/users/:userId/books', 'user#books');
// router.post('/users/:userId/books', 'user#addBook');
 
router.collection('book', '/users/:creatorId/books', 'user')
 
// Equivalent to
 
// router.get('/users/:creatorId/books', 'user#books');
// router.post('/users/:creatorId/books', 'user#addBook');

Package Sidebar

Install

npm i open-router

Weekly Downloads

8

Version

1.0.1

License

MIT

Last publish

Collaborators

  • stonephp