【问题标题】:How to accept params in Express POST call?如何在 Express POST 调用中接受参数?
【发布时间】:2022-01-13 21:07:09
【问题描述】:

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

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

我不确定 & 和 ?在上面的网址中,所以请更正它。

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 call 的实际 URL 和 router.post 的 URL

~SRJ

【问题讨论】:

  • 您能否举一个更好的例子来说明您要处理的 URL 类型?

标签: javascript express url router


【解决方案1】:

您可以通过两种方式在 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

【讨论】:

    【解决方案2】:

    您可以像这样调用您的 URL,下面应该可以工作: 本地主机:8080/汽车/奥迪&A4&2017

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

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

    【讨论】:

      猜你喜欢
      • 2014-09-24
      • 1970-01-01
      • 2018-12-31
      • 2017-05-04
      • 1970-01-01
      • 2017-11-25
      • 2016-01-23
      • 2019-02-24
      • 2015-01-12
      相关资源
      最近更新 更多