gpt4 book ai didi

javascript - express.js req.body 在中间件中未定义

转载 作者:行者123 更新时间:2023-12-05 04:53:57 25 4
gpt4 key购买 nike

我目前在我的 Node 应用程序中遇到问题。

尝试在 post 请求中使用中间件时,req.body 变为未定义。

例如;

router.post('/newpost', ensureAuthenticated, createPost, upload.single('file'), async (req, res) =>{
console.log(req.body);
}

async function createPost(req, res, next){
console.log(req.body);
next();
}

当 createPost 函数运行时,它会将 req.body 记录为未定义。但是当 req.body 被记录在 router.post 中时,它被定义了。

这是我遗漏的东西吗?或者这是不可能的。

我还确保我已经包含了 bodyparser 并在我的路线之前对其进行了初始化。

最佳答案

好吧,我刚刚测试过,一切正常,我在评论中提出了建议

这是我的测试内容:

我的 index.js

const express = require('express')

const router = express.Router()
const app = express()
const PORT = process.env.PORT || 3002

app.use(express.json())

const createPost = (req, res, next) => {
console.log('createPost', req.body)
next()
}

router.post('/newpost', createPost, (req, res) => {
console.log('/nextpost', req.body)
res.json({ message: 'ok' })
})

app.use('/', router)

app.listen(PORT, () => {
console.log(
`server ready at http://localhost:${PORT}`
)
})

和一个简单的REST Client file

@HOST = http://localhost:3002

POST {{HOST}}/newpost
Content-Type: application/json

{
"fname": "Bruno",
"lname": "Alexandre",
"nick": "balexandre"
}

结果是

❯ node .\index.js
server ready at http://localhost:3002
createPost { fname: 'Bruno', lname: 'Alexandre', nick: 'balexandre' }
/nextpost { fname: 'Bruno', lname: 'Alexandre', nick: 'balexandre' }

和调用的响应

HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 16
ETag: W/"10-/VnJyQBB0+b7i4NY83P42KKVWsM"
Date: Tue, 26 Jan 2021 19:59:21 GMT
Connection: close

{
"message": "ok"
}

截图(点击查看全图)

enter image description here


警告

确保您在 POST 请求中传递了 Content-Type: application/json,请记住您告诉 Express 您希望正文解析为 .json() 所以确保它知道你传递的是 json 作为请求体

更多信息...如果我不使用解析器,req.body 只是undefined,例如:

enter image description here


已添加

具有工作解决方案的 GitHub 存储库> https://github.com/balexandre/so65907925

关于javascript - express.js req.body 在中间件中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65907925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com