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

如何解决动态POST请求Body时出现的400 Bad Request错误?

解决POST请求JSON解析错误(位置7意外token s)导致的400 Bad Request

核心问题分析

错误提示JSON解析时位置7出现意外的token s,本质是Postman发送的请求Body不符合JSON语法规范,服务器解析到第7个字符时遇到了无效的s字符,直接触发400错误。

排查与解决步骤

1. 先查Postman请求Body的语法

  • 确认Postman中请求Body选的是raw格式,右侧下拉框必须选中JSON(别选Text或其他)
  • 重点检查JSON语法细节:
    • 所有字符串、键名必须用双引号包裹,绝对不能用单引号(比如"name": "张三"是对的,'name': '张三'直接会报错)
    • 数组/对象末尾不能多写逗号,字段之间的逗号不能漏
    • 位置7的s大概率是单引号的开头(比如写了'name'),或者是其他不符合JSON规范的字符
  • 正确示例JSON:
{
  "name": "张三",
  "age": 22,
  "major": "软件工程"
}

2. 检查后端的JSON解析配置

打开你的app.js,确认已经正确配置了Express的JSON解析中间件:

const express = require('express');
const app = express();

// 必须添加这一行,用来解析application/json格式的请求体
app.use(express.json());

如果没加这行代码,服务器根本无法识别JSON格式的请求体,必然会触发解析错误。

3. 验证请求头设置

Postman的请求头里,Content-Type必须设置为application/json,要是设成text/plain或者其他值,服务器也没法正确解析JSON。

4. 结合你的代码做补充排查

  • 查看students.js里的POST路由逻辑,有没有手动解析请求体的错误代码
  • students.model.js的Schema定义一般不会直接导致JSON解析错误,除非你在中间件里加了自定义的错误解析逻辑,但先优先排查前面的点

快速验证方案

先给服务器发一个极简的正确JSON请求:

{"name":"testStudent"}

如果这个请求能成功,说明之前的请求Body肯定有语法问题;如果还是报错,再回头检查后端的中间件配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:25:47