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

GraphQL规范是否允许服务器返回空对象作为字段值?

GraphQL服务器返回空对象作为字段值是否合法?

场景说明

给定如下GraphQL Schema:

type Query {
  person: Person
}

type Person {
  name: String
}

执行查询语句:

query {
  person {
    name
  }
}

收到如下响应是否符合规范?

{
  "data": {
     "person": {}
  }
}

规范依据与结论

这种响应不符合2021年10月的GraphQL规范,核心依据有两点:

  • 值补全(Value Completion)规则:当查询请求了对象类型的子字段时,若父对象无法提供该子字段的有效数据,要么返回子字段的null值,要么将整个父字段设为null,绝对不能返回空对象来跳过子字段。
  • 执行阶段的字段映射要求:规范明确规定,查询中选中的每个字段(比如示例里的name),都必须在响应对应的对象中生成条目。也就是说,person对象里必须包含"name": null这样的键值对,而不是空对象。

关于歧义的补充

你所说的规范未明确JSON序列化细节的情况确实存在,但从GraphQL的设计初衷来看,响应必须严格匹配查询的字段结构,保证客户端能稳定解析预期的字段。返回空对象会打破这种约定,让客户端无法区分“字段未被返回”和“字段值为null”的场景,这违背了GraphQL的一致性原则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 09:34:52