使用Fetch发送对象至服务器JSON文件返回空对象,Postman正常求排查
问题排查与解决方案
我来帮你搞定这个问题!你遇到的情况是因为fetch发送请求时没有正确处理请求体的格式和请求头,而Postman帮你自动做了这些步骤,所以能正常工作。
问题根源分析
你当前的fetch代码直接把JS对象{a: 1, b:2}作为body参数传递,但fetch API不会自动将JS对象序列化为JSON字符串,也不会自动设置Content-Type: application/json请求头。这就导致后端收到的请求体格式不对,无法解析出你要的数据,所以返回空对象。
而Postman发送JSON请求时,会自动完成两个关键操作:
- 将你输入的JSON对象转成JSON字符串
- 自动添加
Content-Type: application/json请求头
这也是为什么Postman能正常工作的原因。
修改后的正确代码
你需要对fetch请求做两处修改:
- 用
JSON.stringify()把JS对象转为JSON字符串 - 在请求头中明确设置
Content-Type: application/json
修改后的代码如下:
fetch(url + '/send', { method: 'POST', headers: { 'Content-Type': 'application/json' // 必须设置这个请求头 }, body: JSON.stringify({a: 1, b:2}) // 将对象转为JSON字符串 })
额外注意(可选)
如果你用的是Express这类后端框架,要确保已经配置了解析JSON请求体的中间件(比如express.json()),不过从Postman能正常工作来看,你的后端应该已经配置好了,这一步可以忽略。
内容的提问来源于stack exchange,提问作者AzazaMaster
相关产品推荐
相关产品推荐

