- ExpressJS 教程
- ExpressJS - 首页
- ExpressJS - 概述
- ExpressJS - 环境配置
- ExpressJS - Hello World
- ExpressJS - 路由
- ExpressJS - HTTP 方法
- ExpressJS - URL构建
- ExpressJS - 中间件
- ExpressJS - 模板引擎
- ExpressJS - 静态文件
- ExpressJS - 表单数据
- ExpressJS - 数据库
- ExpressJS - Cookie
- ExpressJS - Session
- ExpressJS - 身份验证
- ExpressJS - RESTful API
- ExpressJS - 脚手架
- ExpressJS - 错误处理
- ExpressJS - 调试
- ExpressJS - 最佳实践
- ExpressJS - 资源
- ExpressJS 有用资源
- ExpressJS - 快速指南
- ExpressJS - 有用资源
- ExpressJS - 讨论
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);
要测试这个,请访问 **https://127.0.0.1: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);
要测试上述代码,请访问 **https://127.0.0.1:3000/things/tutorialspoint/12345**。
您可以使用`**req.params**`对象访问您在 url 中传递的所有参数。请注意,以上两个是不同的路径。它们永远不会重叠。如果您想在获得“/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`的请求。您可以使用更复杂的正则表达式来匹配/验证您的路由。如果您的任何路由都不匹配请求,您将收到`**"Cannot GET
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 请求,将显示以下输出:
广告