定义和使用
我们现在可以定义路由,它们要么是静态的,要么是固定的。要使用动态路由,需要提供不同类型的路由。使用动态路由可以让我们基于这些路径传递参数和过程。下面是动态路由的示例。
var koa = require('koa');
var router = require('koa-router');
var app = new koa();
var _router = router(); //实例化路由器
_router.get('/:id', async (ctx)=>{ //定义路由
ctx.body = '您指定的id是' + ctx.params.id;
});
app.use(_router.routes()); //使用路由器定义的路由
app.listen(3001);
要测试此项,请转到http://localhost:3001/55。您将得到以下响应。
您可以用其他任何内容替换URL中的 "55",它将反映在响应中。下面是一个复杂的例子。
var koa = require('koa');
var router = require('koa-router');
var app = new koa();
var _router = router(); //实例化路由器
_router.get('/things/:name/:id', async (ctx)=>{ //定义路由
ctx.body = 'id: ' + ctx.params.id + ' 和 name: ' + ctx.params.name;
});
app.use(_router.routes()); //使用路由器定义的路由
app.listen(3001);
要测试此项,请转到 http://localhost:3001/things/koa/55。
你可以使用 ctx.params 对象访问 URL 中传递的所有参数。
请注意,以上两个路径不同。它们永远不会重叠。另外,如果您想在得到 '/things' 时执行代码,则需要单独定义它。