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

How to accept params in Express POST call?

所以我有一个 api,我必须在 URL 中传递汽车制造商、型号、年份。我有快速路由器 post 调用来获取查询参数并设置为对象。

我需要能够接受 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
}

请解释我需要进行 post 调用的实际 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

这将 return:

{
    "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会像一对key:value,以?开头指定URL的这部分是查询参数的开始,如下& 每个额外的查询参数:

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

这也将 return:

{
    "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
}
}

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