koa-resource-router
RESTful resource routing for koa.
Last updated 6 years ago by amingoia .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install koa-resource-router 
SYNC missed versions from official npm registry.

koa-resource-router

Build Status Dependency Status NPM version

RESTful resource routing for koa.

  • Rails-like REST resource routing.
  • Use multiple middleware for resource actions.
  • Responds to OPTIONS requests with allowed methods.
  • Returns 405 Method Not Allowed when applicable.

Installation

Install using npm:

npm install koa-resource-router

API

new Resource(path, actions, options)

var Resource = require('koa-resource-router');
var app = require('koa')();

var users = new Resource('users', {
  // GET /users
  index: function *(next) {
  },
  // GET /users/new
  new: function *(next) {
  },
  // POST /users
  create: function *(next) {
  },
  // GET /users/:id
  show: function *(next) {
  },
  // GET /users/:id/edit
  edit: function *(next) {
  },
  // PUT /users/:id
  update: function *(next) {
  },
  // DELETE /users/:id
  destroy: function *(next) {
  }
});

app.use(users.middleware());

Action mapping

Actions are then mapped accordingly:

GET     /users             ->  index
GET     /users/new         ->  new
POST    /users             ->  create
GET     /users/:user       ->  show
GET     /users/:user/edit  ->  edit
PUT     /users/:user       ->  update
DELETE  /users/:user       ->  destroy

Overriding action mapping

var users = new Resource('users', actions, {
  methods: {
    update: 'PATCH'
  }
});

Top-level resource

Omit the resource name to specify a top-level resource:

var root = new Resource(require('./frontpage'));

Top-level controller actions are mapped as follows:

GET     /          ->  index
GET     /new       ->  new
POST    /          ->  create
GET     /:id       ->  show
GET     /:id/edit  ->  edit
PUT     /:id       ->  update
DELETE  /:id       ->  destroy

Nesting

Resources can be nested using resource.add():

var forums = new Resource('forums', require('./forum'));
var threads = new Resource('threads', require('./threads'));

forums.add(threads);

Multiple middleware

Run middleware before resource actions by passing middleware functions before your actions:

var users = new Resource('users', authorize, actions);

Run middleware for specific actions by passing an array:

var users = new Resource('users', {
  show: [authorize, function *(next) {
    // ...
  }]
});

MIT Licensed

Current Tags

  • 0.4.0                                ...           latest (6 years ago)

7 Versions

  • 0.4.0                                ...           6 years ago
  • 0.3.3                                ...           6 years ago
  • 0.3.2                                ...           6 years ago
  • 0.3.1                                ...           6 years ago
  • 0.3.0                                ...           7 years ago
  • 0.2.0                                ...           7 years ago
  • 0.1.0                                ...           7 years ago
Maintainers (1)
Downloads
Today 0
This Week 20
This Month 257
Last Day 6
Last Week 90
Last Month 242
Dependencies (5)
Dev Dependencies (4)

Copyright 2014 - 2016 © taobao.org |