URL 构建(URL Building)

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

我们现在可以定义路由,但这些路由是静态的或固定的。 要使用动态路由,我们应该提供不同类型的路由。 使用动态路由允许我们根据它们传递参数和进程。

以下是动态路线的示例 -

var express = require('express');
var app = express();
app.get('/:id', function(req, res){
   res.send('The id you specified is ' + req.params.id);
});
app.listen(3000);

要测试这个,请转到http://localhost:3000/123 。 将显示以下响应。

URL Building 1

您可以使用其他任何内容替换URL中的“123”,更改将反映在响应中。 上述更复杂的例子是 -

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/xnip/12345

URL构建2

您可以使用req.params对象访问您在URL中传递的所有参数。 注意,上面的2是不同的路径。 他们永远不会重叠。 此外,如果你想在获得'/things'时执行代码,那么你需要单独定义它。

模式匹配路由

您还可以使用regex来限制URL参数匹配。 我们假设您需要id为5位长的数字。 您可以使用以下路线定义 -

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);

请注意,这only匹配具有5位长id的请求。 您可以使用更复杂的正则表达式来匹配/验证您的路由。 如果您的路线都不匹配请求,您将获得"Cannot GET 《your-request-route》"消息作为响应。 使用这条简单的路线将此消息替换为404未找到的页面 -

var express = require('express');
var app = express();
//Other routes here
app.get('*', function(req, res){
   res.send('Sorry, this is an invalid URL.');
});
app.listen(3000);

Important - 这应该放在所有路由之后,因为Express匹配index.js文件从开始到结束的路由,包括您需要的外部路由器。

例如,如果我们定义与上面相同的路由,则在使用有效URL进行请求时,将显示以下输出。 -

正确的正则表达式

对于不正确的URL请求,将显示以下输出。

无效的正则表达式(404)