1.0.1 • Published 9 years ago
koa-router-with-resources v1.0.1
koa-router-with-resources
koa-router-with-resources is build upon the popular koa-router package
and extended to include RESTful resource handling (much like Rails' router) which map to standard CRUD operations.
Installation
Install via yarn or npm:
yarn add koa-router-with-resourcesor
npm install koa-router-with-resources --saveUsage
Usage for koa-router-with-resources is exactly the same as the usage for koa-router,
with an added method called resources.
By default, koa-router-with-resources maps a resource to the default 5 CRUD methods on a controller:
indexshowcreateupdatedestroy
The router attempts to be smart by checking if those methods exist. If any of them do not exist,
an HTTP status of 501 Not Implemented will be returned to the client.
Default behavior:
const Router = require('koa-router-with-resources')
let router = new Router()
router.resrouces('users', controller)This creates the following routes:
| Route | Controller Method |
|---|---|
GET /users | index |
GET /users/:id | show |
POST /users | create |
PUT /users/:id | update |
PATCH /users/:id | update |
DELETE /users/:id | destroy |
API
router.resources(path, middleware, controller, options)
path{String} - The base path for the routermiddleware{Array of functions} - Optional List of middleware.controller{Controller} - The controller containing the CRUD methodsopts{Object} - Optionalexcept{Array|String} - Optional. An action or list of actions to exclude from the resource routing. Note:onlytakes precendence overexceptonly{Array|String} - Optional. A action or list of actions to include in the resource routing. Note:onlytakes precendence overexceptparam{String} - Optional. The parameter name to use, by default it isid(accessed byctx.params.id)
Examples
Example 1:
let router = new Router()
router.resources('users', controller.Users)
// GET /users
// GET /users/:id
// POST /users
// PUT /users/:id
// PATCH /users/:id
// DELETE /users/:idExample 2:
let router = new Router()
router.resources('users', controller.Users, { only: ['index', 'show'] })
// GET /users
// GET /users/:idExample 3:
let router = new Router()
router.resources('users', controller.Users, { only: 'show' })
// GET /users/:idExample 4:
let router = new Router()
router.resources('users', controller.Users, { except: ['index', 'show'] })
// POST /users
// PUT /users/:id
// PATCH /users/:id
// DELETE /users/:idExample 5:
let router = new Router()
router.resources('users', controller.Users, { except: 'destroy' })
// GET /users
// GET /users/:id
// POST /users
// PUT /users/:id
// PATCH /users/:id