教程 > koa.js 中文教程 > 阅读:145

koa.js url 构建——迹忆客-ag捕鱼王app官网

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

var koa = require('koa');
var router = require('koa-router');
var app = new koa();
var _ = router();
_.get('/:id', sendid);
function sendid(ctx,next) {
   ctx.body = '指定的id是: '   ctx.params.id;
}
app.use(_.routes());
app.listen(3000);

要对此进行测试,可以访问 http://localhost:3000/369。 我们将得到以下响应。

koa 动态路由

我们可以将 url 中的“369”替换为其他任何内容。 以下是一个稍微复杂示例。

var koa = require('koa');
var router = require('koa-router');
var app = new koa();
var _ = router();
_.get('/things/:name/:id', sendidandname);
function sendidandname(ctx,next){
   ctx.body = 'id: '   ctx.params.id   ' and name: '   ctx.params.name;
};
app.use(_.routes());
app.listen(3000);

访问 http://localhost:3000/things/jiyik/369 结果如下

koa 动态路由2

我们可以使用 ctx.params 对象来访问在 url 中传递的所有参数。 请注意,以上两个具有不同的路径。 它们永远不会重叠。 此外,如果想在请求 “/things” 时执行代码,则需要单独定义它。


模式匹配路由

我们还可以使用正则表达式来限制 url 参数匹配。 假设需要 id 为五位数字。 我们可以使用以下路由定义。

var koa = require('koa');
var router = require('koa-router');
var app = new koa();
var _ = router();
_.get('/things/:id([0-9]{5})', sendid);
function sendid(ctx,next){
   ctx.body = 'id: '   ctx.params.id;
}
app.use(_.routes());
app.listen(3000);

请注意,这只会匹配具有 5 位长 id 的请求。 我们可以使用更复杂的正则表达式来匹配/验证自己的路由。 如果我们的路由都不匹配请求,那将收到 not found 响应消息。

例如,如果我们定义与上面相同的路由,在使用有效 url 进行请求时,我们会得到

koa 模式匹配路由

查看笔记

扫码一下
查看教程更方便
网站地图