【问题标题】:Access URL query Params in an Express POST route在 Express POST 路由中访问 URL 查询参数
【发布时间】:2021-10-31 20:07:56
【问题描述】:

我有一个 NodeJS/Express 应用程序。

来自标题为:localhost:3000/form?someProp=someValue&somethingElse=someOtherValue的 url 端点

此页面将表单提交到另一个 Express 端点。

我提交到 Express POST 端点。我知道在 GET 端点中我可以通过 req.query 访问查询参数,但我似乎无法在 POST 请求中这样做。

有没有办法从 POST 路由中的请求访问查询参数? (除了拼接 header.referrer ......我可能只需要这样做)

这里有一些代码sn-ps:

如果我提交到第一个路线它可以工作,如果我提交到第二个......它不会。

router.get('/test',
  (req, res) => {
    console.log(req.query); // {someProp: someValue, somethingElse: someOtherValue }
  }
);

router.post('/test2',
  (req, res) => {
    console.log(req.query); // returns {}
  }
);

【问题讨论】:

  • 仅供参考,它是在后端点中使用查询参数的反模式。您的帖子正文应包含完成操作所需的信息。如果由于某种原因不可能,那么它应该包含在请求标头中。
  • 我希望我的工作能够理解 :( @WillEvers

标签: node.js express


【解决方案1】:

所以我尝试发送一个简单的请求来测试它,并且没有做任何特殊的事情就可以正常工作(我唯一额外的是我正在使用来自 npm 的 body-parser 中间件):

app.use(bodyParser.json({limit: '50mb'}));

然后我尝试了这条简单的路线,并得到了结果查询参数,如附图所示。

http://localhost:8080/test?test=1&what=2

您是否有可能以不同的方式从客户端发送其他表单请求?尝试在 chrome 中查看网络,看看您是否发送了您期望的内容。显然,这里缺少一些东西,因为它对我有用而没有做任何特别的事情。

【讨论】:

  • 我可以看看你的应用定义吗?就像您在哪里声明快递并添加路由器一样?我们也有 body-parser。
  • @Chris 我刚刚使用了一个新的 express init 应用程序,并且为了测试,我还删除了 body-parser。所以说实话没什么特别的,我有一个快速路由器,其中包括 app.use('/', appRouter); app.listen(port, () => {..... 就是这样
猜你喜欢
  • 2020-11-22
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
相关资源
最近更新 更多