在Express中间件'req'中无法使用POST请求体

3

我有一个非常困惑我的问题,需要你的帮助。

我创建了这个Express中间件:

const express = require('express')
const bodyParser = require('body-parser')
var router = express.Router()
router.use(bodyParser.urlencoded({ extended: false }))
router.use(bodyParser.json())
app.use(router)

router.use((req, res, next) => {
  console.log(req.body)
})

router.post((req, res) => {
  ...
})

无论何时我尝试在router.post中记录body,它都会记录正确的body。然而,当我尝试在router.use中记录它时(如上所示),它只返回一个空对象。有什么想法可以让我在中间件中获取body?谢谢!
1个回答

2

根据官方文档,我看到的唯一问题是在声明所有中间件后,必须将路由器设置为应用程序,如下附图所示。

enter image description here

这句话的意思是“这意味着你的代码应该被改变”。请注意保留原有的HTML格式,不要进行解释。
const express = require('express')
const bodyParser = require('body-parser')
var router = express.Router()
router.use(bodyParser.urlencoded({ extended: false }))
router.use(bodyParser.json())

router.use((req, res, next) => {
  console.log(req.body)
})

router.post((req, res) => {
  ...
})

//setting the router as a middleware after declaring all the routes and middleware functions.
app.use(router)

参考资料:

  1. Express路由
  2. Express路由器API

嗯,不幸的是,它似乎没有起作用。 - Flight Dude
1
实际上,我本来有另外一个问题,但是你的建议竟然解决了那个问题!谢谢你! - Flight Dude

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接