查询和变更
跟许多类型系统一样,GraphQL schema 也具备定义接口和联合类型的能力。在 schema 指南中可了解更多。
如果你查询的字段返回的是接口或者联合类型,那么你可能需要使用内联片段来取出下层具体类型的数据:
如果要请求具体类型上的字段,你需要使用一个类型条件内联片段。因为第一个片段标注为 … on Droid
,primaryFunction
仅在 hero
返回的 为 Droid
类型时才会执行。同理适用于 Human
类型的 height
字段。
具名片段也可以用于同样的情况,因为具名片段总是附带了一个类型。
# { "graphiql": true}
{
search(text: "an") {
... on Human {
}
... on Droid {
name
... on Starship {
name
}
}
}
上面的查询中, 返回了一个联合类型,其可能是三种选项之一。没有 __typename
字段的情况下,几乎不可能在客户端分辨开这三个不同的类型。
GraphQL 服务提供了不少元字段,剩下的部分用于描述 系统。