Skip to content
This repository was archived by the owner on Nov 21, 2023. It is now read-only.

A resourceful router for koa, built on koa-router

License

Notifications You must be signed in to change notification settings

hello-js/hello-resource-router

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

hello-resource-router

Version Dependency Status Build Status Coverage Status Standard - JavaScript Style Guide Downloads

hello-resource-router is build upon the popular koa-router package and extended to include resource routing (much like Rails' router) which map to standard CRUD operations.

Installation

Install via yarn or npm:

yarn add hello-resource-router

or

npm install hello-resource-router --save

Usage

Usage for hello-resource-router is exactly the same as the usage for koa-router, with an added method called resources.

By default, hello-resource-router maps a resource to the default 7 methods on a controller:

  • index
  • new
  • show
  • create
  • edit
  • update (via PUT and PATCH)
  • destroy

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('hello-resource-router')

let router = new Router()
router.resrouces('users', controller)

This creates the following routes:

Route Controller Method
GET /users index
GET /users/new new
GET /users/:id show
POST /users create
GET /users/:id/edit edit
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 router
  • middleware {Array of functions} - Optional List of middleware.
  • controller {Controller} - The controller containing the CRUD methods
  • opts {Object} - Optional
    • except {Array|String} - Optional. An action or list of actions to exclude from the resource routing. Note: only takes precendence over except
    • only {Array|String} - Optional. A action or list of actions to include in the resource routing. Note: only takes precendence over except
    • param {String} - Optional. The parameter name to use, by default it is id (accessed by ctx.params.id)
    • api {Boolean} - Optional. If set to true, this will generate API-only routes, excluding new and edit. [Default: false]

Examples

Example 1:

let router = new Router()
router.resources('users', controller.Users)
// GET /users
// GET /users/new
// GET /users/:id
// GET /users/:id/edit
// POST /users
// PUT /users/:id
// PATCH /users/:id
// DELETE /users/:id

Example 2:

let router = new Router()
router.resources('users', controller.Users, { only: ['index', 'show'] })
// GET /users
// GET /users/:id

Example 3:

let router = new Router()
router.resources('users', controller.Users, { only: 'show' })
// GET /users/:id

Example 4:

let router = new Router()
router.resources('users', controller.Users, { except: ['index', 'show', 'new', 'edit'] })
// POST /users
// PUT /users/:id
// PATCH /users/:id
// DELETE /users/:id

Example 5:

let router = new Router()
router.resources('users', controller.Users, { except: 'destroy' })
// GET /users
// GET /users/new
// GET /users/:id
// GET /users/:id/edit
// POST /users
// PUT /users/:id
// PATCH /users/:id

Example 6:

let router = new Router()
router.resources('users', controller.Users, { api: true })
// GET /users
// GET /users/:id
// POST /users
// PUT /users/:id
// PATCH /users/:id
// DELETE /users/:id

// NOTE: This call is the same as:
router.resources('users', controller.Users, { except: ['new', 'edit'] })

About

A resourceful router for koa, built on koa-router

Resources

License

Stars

Watchers

Forks

Packages

No packages published