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

执行GraphQL的curl命令时遇大括号不匹配错误求助

解决curl调用GraphQL接口的语法错误

问题分析

你的curl命令有两个核心问题:

  1. 错误地把预期的接口响应内容{"data":{"about":"Hello World!"}}直接追加到了命令末尾,这部分是接口返回的结果,不是curl的命令参数,必须移除。
  2. Shell环境下,双引号包裹的JSON里的大括号、内部双引号会被shell当成特殊语法解析,导致curl识别出错。

正确命令示例

方法1:用单引号包裹请求数据(推荐,更简洁)

单引号在shell中不会解析内部的特殊字符,直接用它包裹JSON数据即可:

curl "http://localhost:3000/graphql" \
  -H "Accept-Encoding: gzip, deflate, br" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Connection: keep-alive" \
  -H "DNT: 1" \
  -H "Origin: http://localhost:3000" \
  --data-binary '{"query":"query { about }"}' \
  --compressed

方法2:双引号包裹并正确转义内部字符

如果必须使用双引号,需要把JSON内部的双引号用反斜杠\转义,同时移除多余的响应内容:

curl "http://localhost:3000/graphql" \
  -H "Accept-Encoding: gzip, deflate, br" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Connection: keep-alive" \
  -H "DNT: 1" \
  -H "Origin: http://localhost:3000" \
  --data-binary "{\"query\":\"query { about }\"}" \
  --compressed

额外注意

  • 如果需要保留query的换行格式,在单引号版本里可以直接换行,不需要额外处理;双引号版本则需要对换行符转义,或者使用$'...'语法(仅部分shell支持)。
  • --compressed是curl的标准参数,必须使用英文双破折号,不要误写成中文破折号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:25:18