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

GraphQL接口请求报错:解析请求体失败,存在无效字符'G'

排查GraphQL请求体解析失败的400错误

我来帮你搞定这个问题——这个400错误本质是你的请求体不符合JSON格式,导致GraphQL服务没法正常解析。咱们从最可能的原因开始排查:

  • 检查data.json的内容结构
    错误提示里的无效字符'G',大概率是你的data.json没有用正确的JSON结构包裹GraphQL查询。GraphQL的POST请求要求请求体是一个JSON对象,必须包含query字段(如果有变量还要加variables),比如正确的格式应该是:

    {
      "query": "query { getUser(id: 1) { name email } }",
      "variables": {}
    }
    

    如果你直接在data.json里写了纯GraphQL查询字符串(比如query { getUser(id:1) {name} }),甚至是开头带'G'的错误内容(比如GraphQL query { ... }),服务端解析JSON时就会在开头遇到非JSON语法的'G',直接报错。

  • 验证data.json的JSON语法合法性
    可以用本地工具快速校验JSON语法,比如在终端运行:

    jq . data.json
    

    如果jq报错,说明你的JSON有语法问题——比如引号不配对、缺少逗号、括号不闭合等,这些都会导致解析失败。

  • 用简化命令测试请求
    先绕过data.json,直接用合法的JSON字符串发起请求,验证服务端是否正常:

    curl http://localhost:8080/v1/graphql -X POST -H "Content-Type: application/json" -d '{ "query": "query { __typename }" }'
    

    如果这个命令能正常返回结果,那问题肯定出在data.json的内容上;如果还是报错,再检查服务端的配置或者路由是否正确。

  • 检查文件编码(小众但可能的坑)
    如果是在Windows系统下保存的data.json,有可能带了UTF-8 BOM头——这种隐藏字符也会导致JSON解析失败。可以用文本编辑器(比如VS Code)将文件编码改成UTF-8 without BOM再试。

总结一下:这个错误的核心就是请求体不是合法的JSON,优先把data.json改成GraphQL要求的JSON结构,再校验语法,基本就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:38:14