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

当请求的子对象不存在时,GraphQL服务端应返回何种正确响应?

当子对象不存在时,GraphQL服务端的正确返回内容

示例Schema

type Person {
  name: String!
  address: Address
}

type Address {
  street: String
  city: String
}

查询语句

query Person(name: "Otto") {
    name
    address {
        street
        city
    }
}

场景说明

服务端存在名为Otto的Person对象,但该对象未配置Address(这是正常状态,不是错误)。

正确响应:方案1

{
    "data": {
        "person": {
            "name": "Otto",
            "address": null,
            "__typename": "Person"
        }
    }
}

原因解释

  • 从Schema定义来看,Person的address字段是Address类型(没有!非空约束),这意味着该字段可以不存在值,此时返回null是准确的,能直接表达「这个Person没有关联的Address对象」的语义。
  • 方案2返回一个所有字段为null的Address对象,语义变成了「这个Person存在Address对象,但该对象的street和city字段未设置」,和实际场景完全不符,会误导客户端对数据状态的判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:28:12