Express.js URL 构建

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

这是动态路路由的示例

var express = require('express');
var app = express();

app.get('/:id', function(req, res){
   res.send('指定的ID是: ' + req.params.id);
});
app.listen(3000);

要对此进行测试,请访问 http://localhost:3000/369。 将显示以下响应。

express 动态路由

我们可以将 URL 中的“369”替换为其他任何内容,更改将反映在响应中。 上述一个更复杂的例子是

var express = require('express');
var app = express();

app.get('/things/:name/:id', function(req, res) {
   res.send('id: ' + req.params.id + ' and name: ' + req.params.name);
});
app.listen(3000);

要测试上述代码,请访问 http://localhost:3000/things/jiyik/369

koa 动态路由2

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


模式匹配路由

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

var express = require('express');
var app = express();

app.get('/things/:id([0-9]{5})', function(req, res){
   res.send('id: ' + req.params.id);
});

app.listen(3000);

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

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

express 模式匹配路由

查看笔记

扫码一下
查看教程更方便