• parts of a query can be conditional
  • you can pass two directives to fields or fragments
    • @include(if: Boolean)
    • @skip(if: Boolean)
// Query
query Hero($episode: Episode, $withFriends: Boolean!) {
  hero(episode: $episode) {
    name
    friends @include(if: $withFriends) {
      name
    }
  }
}
 
// Input
{
  "episode": "JEDI",
  "withFriends": true|false
}
 
// Output for withFriends = true
{
  "data": {
    "hero": {
      "name": "R2-D2",
      "friends": [
        {
          "name": "Luke Skywalker"
        },
        {
          "name": "Han Solo"
        },
        {
          "name": "Leia Organa"
        }
      ]
    }
  }
}
 
// Output for withFriends = false
{
  "data": {
    "hero": {
      "name": "R2-D2"
    }
  }
}