📜  ExpressJS-URL构建

📅  最后修改于: 2020-10-25 11:06:22             🧑  作者: Mango


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

这是动态路线的示例-

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 。将显示以下响应。

网址构建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 / tutorialspoint / 12345

网址构建2

您可以使用req.params对象访问您在url中传递的所有参数。请注意,以上2条路径是不同的。它们永远不会重叠。另外,如果要在获取“ / things”时执行代码,则需要单独定义它。

模式匹配路线

您还可以使用正则表达式来限制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);

请注意,这只会匹配具有5位数字长id的请求。您可以使用更复杂的正则表达式来匹配/验证您的路由。如果您的路线均不符合请求,您将收到“无法获取<您的请求路线>”消息作为响应。使用此简单路由,此消息将替换为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);

重要提示-应该将其放置在所有路由之后,因为Express会匹配index.js文件从头到尾的路由,包括所需的外部路由器。

例如,如果我们定义与上述相同的路由,则在请求有效URL时显示以下输出。 –

正确的正则表达式

对于错误的URL请求,将显示以下输出。

无效的正则表达式(404)