GraphQL - API查询语言

查询和修改

查询

{
  hero {
    name
    # Queries can have comments!
    friends {
      name
    }
  }
}

传递参数

每个字段和嵌套对象都可以传递一组参数

{
  human(id: "1000") {
    name
    height(unit: FOOT)
  }
}

定义别名

查询具有不同参数的同一字段时

{
  empireHero: hero(episode: EMPIRE) {
    name
  }
  jediHero: hero(episode: JEDI) {
    name
  }
}

使用片段

片段让您可以构建字段集,然后将它们包含在您需要的查询中。

{
  leftComparison: hero(episode: EMPIRE) {
    ...comparisonFields
  }
  rightComparison: hero(episode: JEDI) {
    ...comparisonFields
  }
}

fragment comparisonFields on Character {
  name
  appearsIn
  friends {
    name
  }
}

操作名称

操作类型是查询、变异或订阅

// 操作类型  操作名称
query HeroNameAndFriends {
  hero {
    name
    friends {
      name
    }
  }
}

变量

$episode 是变量,以$开头 可以给变量设置默认值 类型旁边的!表示必须

query HeroNameAndFriends($episode: Episode! = JEDI) {
  hero(episode: $episode) {
    name
    friends {
      name
    }
  }
}

指令

指令可以附加到字段或片段包含 @include(if: Boolean)如果参数为true,则仅在结果中包含此字段。 @skip(if: Boolean)如果参数是true,跳过此字段。

query Hero($episode: Episode, $withFriends: Boolean!) {
  hero(episode: $episode) {
    name
    friends @include(if: $withFriends) {
      name
    }
  }
}

突变

一种修改服务器端数据的方法 查询是并行的,突变的串行的

mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
  createReview(episode: $ep, review: $review) {
    stars
    commentary
  }
}

内联片段 TODO

// TODO