Express DELETE路由接收Postman请求时req.body为空的问题求助
解决Express中DELETE请求req.body为空的问题
看起来你遇到的核心问题是DELETE请求的body没有被Express正确解析,虽然你的app.js里已经配置了express.json()和express.urlencoded(),但问题大概率出在Postman的请求配置上,下面是具体的排查和解决步骤:
1. 检查Postman的请求设置
很多人会忽略,DELETE请求在Postman里发送body时,需要正确配置格式:
- 确保请求方法选择的是
DELETE - 切换到
Body标签页,选择raw选项,然后在右侧的格式下拉框中选择JSON - 在输入框中填写正确的JSON格式数据,比如:
{"postId": "你的帖子ID"} - 最后检查
Headers标签页,确认存在Content-Type: application/json这个头(如果选了raw JSON,Postman通常会自动添加,但有时候可能失效,手动加上更稳妥)
2. 验证Express的解析配置
你的app.js里已经正确添加了解析中间件:
app.use(express.json()); app.use(express.urlencoded({ extended: false }));
这部分是没问题的,Express会自动解析Content-Type: application/json的请求body,所以只要Postman的请求格式正确,req.body就能拿到数据。
额外注意事项
等你解决了req.body的问题后,还有个MongoDB的小坑要注意:你的_id如果是MongoDB自动生成的ObjectId类型,直接用字符串的postId去匹配是找不到文档的,需要转换成ObjectId:
const { ObjectId } = require('mongodb'); // ... postsCollection.findOneAndDelete({"_id": ObjectId(postId)})
按照上面的步骤调整Postman的请求配置后,你应该就能正常拿到req.body里的postId了。
内容的提问来源于stack exchange,提问作者vdotcodes
相关产品推荐
相关产品推荐

