Swedish routing, for Koa.
npm install koa-rutt
Most features will be demonstrated below.
var app = require('koa')();
Router = require('koa-rutt');
var router = new Router();
// Add pre-middleware.
router
.pre(function*(next) {
// This will run on all HTTP methods first (GET, POST, etc);
})
.pre('post', function*(next) {
// Run a middleware just on this HTTP method (POST), such as a body parser
})
.get('/', function*(next) {
this.body = "Index!";
})
.get('/item/:id', function(next) {
// a `params` object is added to `this`.
var id = this.params.id;
})
.post('/item/:id', function(next) {
// You can use this just like koa-router, although repeating yourself
// does get annoying.
})
.route('/item2/:id', {
// How about we define them all at once?
get: function*(next) {
var id = this.params.id;
},
post: function*(next) {
// Oh this is much better!
}
});
// You can also return individual Route objects if you prefer
router
.route('/some/route')
.get(function*(next) {
// ...
})
.post(function(next) {
// ...
})
.delete(function(next) {
// ...
}),
.put(function(next) {
// ...
});
// Add the router as middleware to the app.
app.use(router.middleware());
app.listen(3000);
Middleware callback signature for use with koa-rutt.
Must be a generator.
Name | Type | Attributes | Description |
---|---|---|---|
ctx | KoaContext |
The koa context. | |
next | KoaMiddleware |
The koa 'next' middleware. |
The route.
Name | Type | Attributes | Description |
---|---|---|---|
router | Router |
The Router this Route is attached to. | |
path | String |
The URL path. |
Assign middleware to be run upon relevant HTTP method being triggered.
Name | Type | Attributes | Description |
---|---|---|---|
middleware | Middleware |
multiple | Middleware to be attached to called HTTP method. |
Returns: Route
Returns this instance of Route.
The router.
Name | Type | Attributes | Description |
---|---|---|---|
[options] | Object |
optional | Options object |
options.prefix | string |
The prefix of each route of this router. |
Assign middleware to be run upon relevant HTTP method being triggered.
Name | Type | Attributes | Description |
---|---|---|---|
path | String |
The path to the relevant Route. | |
middleware | Middleware |
multiple | Middleware to be attached to called HTTP method. |
Returns: Router
Returns this instance of Router.
Add routes using a provided constructor that implements the endpoints protocol.
All class methods are bound to the class instance.
Name | Type | Attributes | Description |
---|---|---|---|
routeClass | `Function | Class` |
Returns: Router
Returns this instance of Router.
Example: Usage with class implementing endpoints protocol
const endpoints = require("koa-rutt").endpoints
class MemberRoutes {
[endpoints]() {
return {
get: {
"/member/:id": this.get
},
post: {
"/members": this.create
},
put: {
"/member/:id": [requireAuth, this.update]
},
delete: {
"/member/:id": [requireAuth, this.delete]
}
}
}
* get(ctx, next) { ... }
* create(ctx, next) { ... }
* update(ctx, next) { ... }
* delete(ctx, next) { ... }
}
Create or get a Route from the Router object, or HTTP methods on Route by using the optional methods parameter.
Name | Type | Attributes | Description |
---|---|---|---|
path | String |
The URL path to the resource. | |
[methods] | Object |
optional | An object with HTTP methods. |
Returns: Router|Route
Returns this instance of Router, or Route for path if no methods specified.
Example: Usage with optional methods parameter
router.route('/test', {
* get(ctx, next) {
// Do something
},
* post(ctx, next) {
// Do something
}
})
Example: Usage with only path parameter
const testRoute = router.route('/test')
A convenience method for pointing all subpaths of path to a static assets directory and resolving content.
Name | Type | Attributes | Description |
---|---|---|---|
path | String |
The URL prefix for path to assets. | |
realPath | String |
The path to assets on local file system. |
Returns: Router
Returns this instance of Router.
Define middleware to run prior to HTTP method middleware. If no method provided, the middleware will run before all other middlewares on the router.
Name | Type | Attributes | Description |
---|---|---|---|
[method] | string |
optional | The HTTP method (eg 'get') to add pre-middleware to. |
middleware | Middleware |
multiple | The middleware to attach. |
Returns: Router
Returns this instance of Router.
Example: Example of #pre usage.
router.pre(function* (ctx, next) {
ctx.type = 'application/json'
yield next
}).pre('post', bodyParser())
Returns the middleware to be provided to the Koa app instance.
Returns: GeneratorFunction
Middleware to provide to Koa.
BSD 2-clause license. See LICENSE.