Apollo Clientについて学ぼうと思い、Introduction - Apollo Basics - Apollo GraphQL Docsをやっていた。しかし、これをやる中でGraphQLのクエリ言語についてあまり分かってないことに気づいたので、Queries and Mutations | GraphQLを見て、クエリについて学習した。
Fragment、queryの命名、変数を使ってRDBのプレースホルダー的なことをする方法、ifの利用などが分かってよかった。以下メモ書き。
- Fragmentを用いてクエリの再利用ができる
- 引数名を用いてFragmentに変数を引き継ぐこともできる
query HeroComparison($first: Int = 3) {
leftComparison: hero(episode: EMPIRE) {
...comparisonFields
}
rightComparison: hero(episode: JEDI) {
...comparisonFields
}
}
fragment comparisonFields on Character {
name
friendsConnection(first: $first) {
totalCount
edges {
node {
name
}
}
}
}
- queryなどには命名ができ、そうすることでサーバ上でログなどが取りやすくなる
query HeroNameAndFriends {
hero {
name
friends {
name
}
}
}
- 動的に値を変えるために一部分を変数にしておいて、分割して変数だけ渡すこともできる
- default valueもつけられる
query HeroNameAndFriends($episode: Episode) {
hero(episode: $episode) {
name
friends {
name
}
}
以下のようにvariablesを指定する
{
"episode": "JEDI"
}
- @include(if: Boolean)や@skip(if: Boolean)で、条件付きで取得するクエリも作れる
query Hero($episode: Episode, $withFriends: Boolean!) {
hero(episode: $episode) {
name
friends @include(if: $withFriends) {
name
}
}
}
- 複数クエリを発行したとき、queryは並列実行されるが、mutationは直列実行される