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

使用CURL调用FreeAgent CRM GraphQL API时遇查询字符串缺失报错

问题解决:FreeAgent CRM GraphQL API返回"Must provide query string"错误

核心问题分析

你的请求存在两个关键问题,导致服务器无法正确解析GraphQL查询:

  1. 缺少Content-Type请求头:GraphQL POST请求需要明确指定Content-Type: application/json,否则服务器可能将请求体当作表单数据解析,无法识别query字段。
  2. JSON格式错误+变量传递不规范:你在query中直接硬编码变量值,且未处理JSON内部的双引号冲突,导致请求体格式无效;同时GraphQL规范要求变量需通过单独的variables字段传递,而非直接嵌入query定义。

修正后的CURL命令

curl -i \
  -H "Authorization: bearer MY_TOKEN" \
  -H "Content-Type: application/json" \
  -X POST \
  -d '{
    "query": "query getFields($entity:String,$show_hidden:Boolean) { getFields(entity:$entity,show_hidden:$show_hidden){ id name name_label main_type is_required is_visible is_unique default_value catalog_type_id reference_field_id reference_fa_entity_id reference_fa_entity_name }}",
    "variables": {
      "entity": "products",
      "show_hidden": false
    }
  }' https://freeagent.network/api/graphql

关键修正点说明

  • 添加Content-Type头:明确告知服务器请求体为JSON格式,确保正确解析query和variables字段。
  • 分离query与variables:将包含变量占位符的查询定义放在query字段,变量值单独存入variables对象,既符合GraphQL规范,也避免了引号嵌套冲突。
  • 规范JSON格式:用单引号包裹完整请求体,内部双引号无需额外转义,保证JSON结构合法。

额外检查项

  • 确认MY_TOKEN为有效访问令牌,格式需严格遵循bearer 空格 + 令牌字符串(你的命令格式正确,但需确保令牌未过期)。
  • 验证查询字段与FreeAgent CRM API实际定义一致,可通过官方提供的GraphQL调试工具先测试查询正确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:30:51