Graphql のincludeディレクティブは一つの条件しか設定できないのか

Graphql のincludeディレクティブは一つの条件しか設定できないのか

grqphqlのクエリを書く際、Aの場合は、Aのクエリを含めて、Bは含めないなどの制御がしたかった。

includeディレクティブを使えば、できそうだと思ったが、

AかつBの場合は、Cのクエリを入れるような複合条件はできなかった。

その時の記録。

わかったこと

以下のようなクエリの場合、

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

$withFriendsはBooleanでないといけない。

Intergerだとエラーになる。

@include(if: $withFriends && $withFriends2)のようなこともできない。

1つの条件でクエリの追加削除だけができる機能であることがわかった。

引き続き検討したい点

Graphqlのクエリは1回のクエリにまとめてしまうのが良いのか、

引数を切り替えて、複数回呼び出すのが良いのか、

悩んでいるところ。

この問題は、サーバ側のスペックにもよるところがあるのだろうが、

単純に、レスポンスの早い方を採用すべきなのだろうか?

可読性を考えたクエリ実行や遅延ロードを想定して分割クエリにすべきなのか。

もう少し考えながら、実装を進めたい。

Directives
https://graphql.org/learn/queries/#ç

Web技術カテゴリの最新記事