KoaHub平台基于Node.js开发的Koa router路由插件代码信息详情
koa-router
Router middleware for koa. Provides RESTful resource routing.
koa-router
Router middleware for koa[list][*]Express-style routing using app.get, app.put, app.post, etc.
[*]Named URL parameters.
[*]Named routes with URL generation.
[*]Responds to OPTIONS requests with allowed methods.
[*]Support for 405 Method Not Allowed and 501 Not Implemented.
[*]Multiple route middleware.
[*]Multiple routers.
[*]Nestable routers.
[*]ES7 async/await support (koa-router 7.x).[/list]koa 2.x
See koa-router 7.x for koa 2.x and async/await support.
Installation
Install using npm:npm install koa-router
API Reference[list][*]koa-router
[*]Router ⏏
[*]new Router([opts])
[*]instance
[*].get|put|post|patch|delete ⇒ Router
[*].param(param, middleware) ⇒ Router
[*].use([path], middleware, [...]) ⇒ Router
[*].routes ⇒ function
[*].allowedMethods([options]) ⇒ function
[*].redirect(source, destination, code) ⇒ Router
[*].route(name) ⇒ Layer | false
[*].url(name, params) ⇒ String | Error
[*]static
[*].url(path, params) ⇒ String[/list]Router
Kind: Exported class
new Router([opts])
Create a new router.
[table=50%]
var app = require('koa')();<br>
var router = require('koa-router')();<br>
<br>
router.get('/', function *(next) {...});<br>
<br>
app<br>
.use(router.routes())<br>
.use(router.allowedMethods());
router.get|put|post|patch|delete ⇒ Routerrouter<br>
.get('/', function *(next) {<br>
this.body = 'Hello World!';<br>
})<br>
.post('/users', function *(next) {<br>
// ... <br>
})<br>
.put('/users/:id', function *(next) {<br>
// ... <br>
})<br>
.del('/users/:id', function *(next) {<br>
// ... <br>
});
Route paths will be translated to regular expressions using path-to-regexp.router.get('user', '/users/:id', function *(next) {<br>
// ... <br>
});<br>
<br>
router.url('user', 3);<br>
// => "/users/3"
Multiple middlewarerouter.get(<br>
'/users/:id',<br>
function *(next) {<br>
this.user = yield User.findOne(this.params.id);<br>
yield next;<br>
},<br>
function *(next) {<br>
console.log(this.user);<br>
// => { id: 17, name: "Alex" } <br>
}<br>
);
Nested routersvar forums = new Router();<br>
var posts = new Router();<br>
<br>
posts.get('/', function *(next) {...});<br>
posts.get('/:pid', function *(next) {...});<br>
forums.use('/forums/:fid/posts', posts.routes(), posts.allowedMethods());<br>
<br>
// responds to "/forums/123/posts" and "/forums/123/posts/123" <br>
app.use(forums.routes());
Router prefixesvar router = new Router({<br>
prefix: '/users'<br>
});<br>
<br>
router.get('/', ...); // responds to "/users" <br>
router.get('/:id', ...); // responds to "/users/:id"
URL parametersrouter.get('/:category/:title', function *(next) {<br>
console.log(this.params);<br>
// => { category: 'programming', title: 'how-to-node' } <br>
});
Kind: instance property of Routerrouter.use(session(), authorize());<br>
<br>
// use middleware only with given path <br>
router.use('/users', userAuth());<br>
<br>
app.use(router.routes());
router.prefix(prefix) ⇒ Routerrouter.prefix('/things/:thing_id')
router.allowedMethods([options]) ⇒ functionvar app = koa();<br>
var router = router();<br>
<br>
app.use(router.routes());<br>
app.use(router.allowedMethods());<br>
<br>
Example with Boom<br>
<br>
var app = koa();<br>
var router = router();<br>
var Boom = require('boom');<br>
<br>
app.use(router.routes());<br>
app.use(router.allowedMethods({<br>
throw: true,<br>
notImplemented: () => new Boom.notImplemented(),<br>
methodNotAllowed: () => new Boom.methodNotAllowed()<br>
}));
router.redirect(source, destination, code) ⇒ Routerrouter.redirect('/login', 'sign-in');
This is equivalent to:router.all('/login', function *() {<br>
this.redirect('/sign-in');<br>
this.status = 301;<br>
});
Kind: instance method of Router