查询和变更

    跟许多类型系统一样,GraphQL schema 也具备定义接口和联合类型的能力。在 schema 指南中可了解更多。

    如果你查询的字段返回的是接口或者联合类型,那么你可能需要使用内联片段来取出下层具体类型的数据:

    如果要请求具体类型上的字段,你需要使用一个类型条件内联片段。因为第一个片段标注为 … on DroidprimaryFunction 仅在 hero 返回的 为 Droid 类型时才会执行。同理适用于 Human 类型的 height 字段。

    具名片段也可以用于同样的情况,因为具名片段总是附带了一个类型。

    1. # { "graphiql": true}
    2. {
    3. search(text: "an") {
    4. ... on Human {
    5. }
    6. ... on Droid {
    7. name
    8. ... on Starship {
    9. name
    10. }
    11. }
    12. }

    上面的查询中, 返回了一个联合类型,其可能是三种选项之一。没有 __typename 字段的情况下,几乎不可能在客户端分辨开这三个不同的类型。

    GraphQL 服务提供了不少元字段,剩下的部分用于描述 系统。