koa-resource-routes
A lightweight middleware for Koa for declarative action-based routing.
- Encourages modular RESTful routing scheme
- Actions are similar to established Rails routing conventions
- Supports routing for nested resources
Action-based Routing
Action | Route | Aliases |
---|---|---|
index | GET /item |
default , main |
create | POST /item |
|
show | GET /item/:param |
|
update | PUT /item/:param |
|
destroy | DELETE /item/:param |
Usage
This plugin is a very lightweight layer on top of koa-route
that allows you to organize your
routes based on resources that contain actions. Five fundamental resource actions are
supported:
index
: Returns a list of the resources.create
: Creates a resource.show
: Shows a specific resource.update
: Updates a specific resource.destroy
: Destroys a specific resource.
It all works by passing in an object that contains a structured representation of your resources and actions. Resources can be nested within other resources.
var koa = ;var mount = ;var resourceRoutes = ; var resources = users: { // GET /v1/users } { // POST /v1/users } { // GET /v1/users/:usersParam } photos: { // GET /v1/users/:usersParam/photos } { // DELETE /v1/users/:usersParam/photos/:photosParam } items: { // GET /v1/items } ; var app = ; // Other middleware should go here; resourceRoutes should be last // Pass resources into middleware, and set URL prefix to '/v1'app; app;
URL Parameters
URL parameters for a given route will be in this.params.<resourceName>Param
. Here's an example
for a resource called someResource
.
someResource: { thisbody = 'Currently showing some resource with param = ' + thisparamssomeResourceParam; }
Parameters are designed to be completely flexible. You have the choice of putting a numerical identifier or a slug.
ES6 Module Syntax
For an example of how to use this plugin with the ES6 Module Syntax, check out the Users and Events example.
Examples
Installation
Run the command:
$ npm install --save koa-resource-routes
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new pull request