- 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"
}
}
}