繁体   English   中英

如何在 Express POST 调用中接受参数?

[英]How to accept params in Express POST call?

所以我有一个 api,我必须通过汽车制造商,model,年份在 URL。 我有快速路由器后调用来获取查询参数并设置为 object。

我需要能够接受 URL 中的参数,所以说 localhost:8080/cars/[不确定这个语法,但我需要 make:Audi?model:A4?year:2017]

我不确定 & 和? 在上面url,所以请更正。

router.post('/:make[not sure of this either but need to accept all params]),
function(req,res)
{
var make: req.query.make // here I should be able to get make of car and it should match query url
}

请解释我需要拨打电话的实际 URL 和 router.post 的 URL

~SRJ

您有两种方法可以在 Express.js 中使用 URL 参数。

  1. 使用路由参数。 req.params - 使用此方法,您需要在服务器路由的 URL 中指定您期望接收的参数的名称:
app.get('/cars/:make/:model/:year', function (req, res) {
  res.send(req.params)
})

并且 URL 将按照每个参数在路由中出现的顺序保存它们的值:

localhost:8080/cars/Audi/A4/2017

这将返回:

{
    "make": "Audi",
    "model": "A4",
    "year": "2017"
}

您可以通过简单地添加路由中指定的参数名称来访问特定的 URL 参数,如下所示: res.send(req.params.make)

  1. 使用查询参数。 req.query - 这看起来更接近你所做的。 使用此方法,您无需在路由中指定参数名称,因此您的路由将是:
app.get('/cars', function (req, res) {
  res.send(req.query)
})

URL 就像一个键:值对,以? 指定 URL 的这一部分是查询参数的开头,每个附加查询参数后面都有&

localhost:8080/cars?make=Audi&model=A4&year=2017

这也将返回:

{
    "make": "Audi",
    "model": "A4",
    "year": "2017"
}

与路由参数方法相同,您还可以通过将其添加到查询参数来访问特定的查询参数,如下所示: req.query.model

你可以像这样调用你的 URL 和下面应该工作:localhost:8080/cars/Audi&A4&2017

router.post('/:make&:model&:year),
function(req,res)
{
const car = {
make: req.params.make,
model: req.params.model,
year: req.params.year
}
}

这将为您提供所需变量中的所有属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM