Coder Social home page Coder Social logo

open-router's Introduction

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');

open-router's People

Contributors

zhaoxiongfei avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Forkers

zhangjx

open-router's Issues

router与controller方法关联设计上显得有一点分裂

router与controller方法关联设计上显得有一点分裂,具体表现为:

这种写法增加路由时:
r.resource('public_opinion');

controller中文件命名必须为public_opinion.js才能识别

而当使用这种写法时:
r.post('/public_opinions/:publicOpinionId/accounts', 'publicOpinionAccount#addAccount');

controller中文件命名必须为:public-opinion-account.js

建议不管使用什么写法,controller中文名命名方式均保持统一,或者‘-’‘_’两种文件命名方式均支持

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.