当前位置: 首页 > 文档资料 > Koa 入门教程 >

URL构建(URL Building)

优质
小牛编辑
130浏览
2023-12-01

我们现在可以定义路线; 它们是静态的或固定的。 要使用动态路由,我们需要提供不同类型的路由。 使用动态路由允许我们根据它们传递参数和过程。 以下是动态路线的示例。

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 。 您将得到以下回复。

网址建设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://localhost:3000/things/xnip/12345

URL构建复合体

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

请注意,这only匹配具有5位长ID的请求。 您可以使用更复杂的正则表达式来匹配/验证您的路由。 如果您的所有路由都不匹配该请求,您将收到一条未找到的消息作为响应。

例如,如果我们定义与上面相同的路由,请求使用有效的URL,我们得到 -

网址匹配正确