Express POST接口调用时Postman报req.body() is not a function如何解决
问题原因
- 在Express框架中,
req.body是用来存放解析后POST请求参数的内置属性,它不是可调用的函数,添加括号调用就会触发req.body() is not a function报错。 - 使用
req.body前必须提前配置Express的请求体解析中间件,否则req.body会返回undefined,同样无法正常拿到请求参数。
修复方案
- 先在所有路由定义前配置请求体解析中间件,Express 4.16.0及以上版本已内置相关中间件,无需单独安装body-parser:
// 解析JSON格式请求体 app.use(express.json()) // 解析表单格式请求体 app.use(express.urlencoded({ extended: true }))
- 修改原有接口代码,移除
req.body后的调用括号即可,同时建议给错误响应添加对应的HTTP状态码,方便前端识别请求结果:
app.post('/data', (req, res) => { const body = req.body; Data.save(body) .then(response => { console.log('saved to mongo db', response); res.json(response); }) .catch(error => { console.log('error in saving to mongo db', error); res.status(500).json(error); }); });
内容的提问来源于stack exchange,提问作者Omkar Joshi
相关产品推荐
相关产品推荐

