Express 中的路由参数

发布于 2022-08-20 12:51:07 字数 2155 浏览 204 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

最冷一天

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文