Express服务器POST请求JSON格式req.body始终为空问题求助
问题原因&解决方案
1. 前端fetch配置拼写错误
fetch API的请求配置中,请求头的配置字段是复数形式headers,你当前代码中写的是单数header,导致Content-Type: application/json请求头没有被正确携带。
Express内置的express.json()中间件只会对请求头Content-Type为application/json的请求做解析,缺少对应请求头的情况下中间件会直接跳过解析,req.body就会是空对象。
修复后的前端fetch代码:
fetch('/register', { method: 'POST', // 这里把header改为headers headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ 'username': username, 'password': password }) })
2. curl命令参数使用错误
你使用的curl命令参数格式错误,-H参数仅用于指定请求头,指定请求方法需要用-X参数,正确的curl命令如下:
curl -X POST -H "Content-Type: application/json" -d '{"username":"xyz","password":"xyz"}' http://localhost:3000/register
验证步骤
修改完代码后重启Express服务,重新发起请求即可正常在req.body中获取到提交的JSON字段。
内容的提问来源于stack exchange,提问作者StackOverthrow
相关产品推荐
相关产品推荐

