Express 中的路由参数
在 Express 中, 路由参数 本质上是从 URL 的命名部分派生的变量。 Express 捕获命名部分中的值并将其存储 在 req.params
变量中 。
const app = require('express')();
// `:userId` is a route parameter. Express will capture whatever
// string comes after `/user/` in the URL and store it in
// `req.params.userId`
app.get('/user/:userId', (req, res) => {
req.params; // { userId: '42' }
res.json(req.params);
});
const server = await app.listen(3000);
// Demo of making a request to the server
const axios = require('axios');
const res = await axios.get('http://localhost:3000/user/42');
res.data; // { userId: '42' }
您可以在一个 URL 中定义多个路由参数。 在下面的示例中,Express 路线是 /users/:userId/books/:bookId
, 所以 req.params.userId
将包含 子字符串 之后 /users/
和之前 /books/
的内容, 和 req.params.bookId
将包含之后的所有内容 /books/
。
const app = require('express')();
app.get('/user/:userId/books/:bookId', (req, res) => {
req.params; // { userId: '42', bookId: '101' }
res.json(req.params);
});
const server = await app.listen(3000);
// Demo of making a request to the server
const axios = require('axios');
const res = await axios.get('http://localhost:3000/user/42/books/101')
res.data; // { userId: '42', bookId: '101' }
为什么要路由参数?
相比,路由参数具有一些方便的属性,可以减少您需要进行的验证量 查询参数 或 请求正文 :
- 路由参数永远不会
null
或者undefined
, 例如请求GET /users
以上将导致 HTTP 404,并且不会调用路由处理程序/users/:userId/books/:bookId
。 - 路由参数始终是具有正长度的字符串。 例如
GET /user/42/books/
也会导致 HTTP 404。
如果您在 Express 中定义 HTTP API,通常最好将参数设置为路由参数,而不是查询参数或正文参数(如果可能)。 如果您的参数是必需的并且不需要是对象,则路由参数通常是要走的路。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: Express 中的查询参数
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论