ExpressJS - URL 构建
我们现在可以定义路由,但这些路由是静态或固定的。要使用动态路由,我们应该提供不同类型的路由。使用动态路由允许我们传递参数并根据它们进行处理。
这是一个动态路由的示例 −
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 中的"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。
您可以使用 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);
请注意,这将仅匹配具有 5 位长 id 的请求。您可以使用更复杂的正则表达式来匹配/验证您的路由。如果您的路由均不符合请求,您将收到 "无法获取 <your-request-route>" 消息作为响应。使用此简单路由 −,此消息将被 404 未找到页面替换
var express = require('express'); var app = express(); //此处为其他路由 app.get('*', function(req, res){ res.send('Sorry, this is an invalid URL.'); }); app.listen(3000);
重要 − 这应该放在所有路由之后,因为 Express 会匹配 index.js 文件中从开始到结束的路由,包括您需要的外部路由器。
例如,如果我们定义与上述相同的路由,则在使用有效 URL 请求时,将显示以下输出。 −
而对于不正确的 URL 请求,将显示以下输出。