📅  最后修改于: 2020-10-23 07:44:07             🧑  作者: Mango
现在我们可以定义路线了;它们是静态的或固定的。要使用动态路由,我们需要提供不同类型的路由。使用动态路由使我们可以传递参数并基于它们进行处理。以下是动态路线的示例。
var koa = require('koa');
var router = require('koa-router');
var app = koa();
var _ = router();
_.get('/:id', sendID);
function *sendID() {
this.body = 'The id you specified is ' + this.params.id;
}
app.use(_.routes());
app.listen(3000);
要对此进行测试,请访问https:// localhost:3000/123 。您将收到以下响应。
您可以将URL中的“ 123”替换为其他任何内容,并将其反映在响应中。以下是上面的一个复杂示例。
var koa = require('koa');
var router = require('koa-router');
var app = koa();
var _ = router();
_.get('/things/:name/:id', sendIdAndName);
function *sendIdAndName(){
this.body = 'id: ' + this.params.id + ' and name: ' + this.params.name;
};
app.use(_.routes());
app.listen(3000);
要对此进行测试,请访问https:// localhost:3000 / things / tutorialspoint / 12345 。
您可以使用this.params对象访问您在URL中传递的所有参数。请注意,以上两个路径不同。它们永远不会重叠。另外,如果要在获取“ / things”时执行代码,则需要单独定义它。
您还可以使用正则表达式来限制URL参数匹配。假设您需要ID为五位数长的数字。您可以使用以下路由定义。
var koa = require('koa');
var router = require('koa-router');
var app = koa();
var _ = router();
_.get('/things/:id([0-9]{5})', sendID);
function *sendID(){
this.body = 'id: ' + this.params.id;
}
app.use(_.routes());
app.listen(3000);
请注意,这只会匹配具有5位数字长id的请求。您可以使用更复杂的正则表达式来匹配/验证您的路由。如果您的路线均不符合请求,您将收到一条未找到消息作为响应。
例如,如果我们定义与上述相同的路由,则使用有效的URL请求时,我们得到-