📜  req.params (1)

📅  最后修改于: 2023-12-03 15:19:48.472000             🧑  作者: Mango

req.params 介绍

在 Node.js 中,req.params 是 Express 中的一个对象,它代表了 HTTP 请求的 URL 参数。

当我们在路由中定义 URL 时,我们可以使用占位符,例如 /:id,这样的 URL 就可以匹配所有以该路径为前缀的请求,而占位符中的部分则可以是任意值。例如,如果有一个请求的 URL 是 /123,那么 Express 将会自动把 123 作为 req.params.id 的值传递给我们的路由处理程序。

如何访问 req.params

我们可以使用 req.params 来获取 URL 参数。如下所示:

app.get('/users/:id', function (req, res) {
  res.send('User ID: ' + req.params.id)
})

在上述代码中,我们定义了一个路由来处理 /users/:id 路径下的 GET 请求,并将 URL 参数 :id 的值通过 req.params.id 传递到请求处理程序中。

使用占位符定义 URL

在 Express 中,我们可以使用标准的路由定义来定义 URL,使用括号表示占位符,例如:

app.get('/users/:id', function (req, res) {
  res.send('User ID: ' + req.params.id)
})

在上述代码中,我们使用 /:id 定义了一个占位符,表示 URL 中的一个补位符,它可以是任何值,并将其传递到我们的路由处理程序中。

多个 URL 参数的情况

如果我们在 URL 中定义了多个参数,例如 /:username/:password,那么我们可以通过 req.params.usernamereq.params.password 来分别访问它们。

如何使用正则表达式限制 URL 格式

我们可以使用正则表达式来限制 URL 的格式。例如,如果我们要访问 /users/12345,但是只接受纯数字作为 ID,那么可以在路由中使用正则表达式:/users/:id(\d+)。这个正则表达式表示 id 应该匹配一个或多个数字。

app.get('/users/:id(\\d+)', function (req, res) {
  res.send('User ID: ' + req.params.id)
})

如上述代码所示,我们在路由中通过 /:id(\d+) 的方式来限制 id 参数的格式,这样只有匹配完整的数字才会被通过。

结语

req.params 是 Express 中与 HTTP 请求 URL 参数相关的对象。通过 req.params,我们可以轻松地访问 URL 中的参数,并且可以通过正则表达式来限制 URL 参数的格式。