You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js Fetch发送POST请求返回400错误的原因排查

问题解决:POST单个JSON整数触发400 Bad Request

问题核心

发送仅包含单个整数的JSON格式POST请求时,返回400错误,后端updateVisits()函数从未执行;但将数据改为JSON对象或纯文本格式时请求正常,同项目的GET请求无异常。

原因分析

后端使用的JSON解析中间件(如Express的express.json())默认开启strict: true配置,该配置会拒绝顶层非对象类型的JSON值(单个数字、字符串、布尔值等),导致请求在进入业务处理函数前就被中间件拦截,返回400错误。

解决方案

方案1:修改后端JSON中间件配置

在后端启动代码中,调整express.json()的配置,关闭strict模式:

// 替换原有的app.use(express.json());
app.use(express.json({ strict: false }));

此配置允许中间件解析顶层的数字、字符串等JSON值,请求可正常进入updateVisits()函数,此时后端可通过req.body直接获取到该整数。

方案2:前端调整请求数据格式

将单个整数包装为JSON对象发送,例如:

// 原本的data是单个整数,现在改为对象
siteData.myPost("/UpdateSiteVisits", { id: 123 });

后端updateVisits()函数中通过req.body.id获取该整数即可,此方式更符合常规API设计规范。

内容的提问来源于stack exchange,提问作者quilkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:10:29