Koa.js - URL构建



现在我们可以定义路由了;它们是静态的或固定的。要使用动态路由,我们需要提供不同类型的路由。使用动态路由允许我们传递参数并根据参数进行处理。以下是一个动态路由的示例。

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://127.0.0.1:3000/123。您将收到以下响应。

URL Building ID

您可以将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://127.0.0.1:3000/things/tutorialspoint/12345

URL Building Complex

您可以使用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);

请注意,这将匹配具有五位数id的请求。您可以使用更复杂的正则表达式来匹配/验证您的路由。如果您的任何路由都不匹配请求,您将收到“未找到”消息作为响应。

例如,如果我们定义与上述相同的路由,则在使用有效URL请求时,我们将得到:

URL Matching Correct
广告