GraphQLとRESTの比較
参考
ユーザーのプロファイル(user)と住所(address)を取得するAPIがあるとする
https://scrapbox.io/files/63322d270744e9001d49edd1.png
https://scrapbox.io/files/63322d3d502466001d13ba94.png
GraphQLの利点
過剰取得の回避
必要なフィールドを正確に指定できるため、必要以上のデータを取得することを避けられる
API呼び出し頻度の抑制
より多くのデータを処理する際に、APIの呼び出し頻度を抑制することができる
上記のような場合、user と address を取得するために2つのAPI呼び出しを使う必要はない
API開発者とのやり取りの簡略化
必要なデータを確実に取得するためには、API呼び出し頻度を抑制しつつ、より多くデータを取得する必要がある
そのために新しいAPIの構築を開発者に依頼する必要も生じる。
GraphQLなら、APIチームの作業を独立させることができる。これにより、アプリ関連の作業を高速化する。
セルフドキュメンテーション
すべてのGraphQL APIは、グラフデータモデルとクライアントが実行可能なクエリタイプで構成された「スキーマ」に準拠している
セルフドキュメンテーションは、コミュニティによるAPIの探索・視覚化をサポートする多くの優れたツールの構築や、GraphQLクエリをオートコンプリートするIDEプラグインや「codegen」の開発を可能にする
仮にモバイル向けAPIが必要でもGraphQLのスキーマは使い回せる
まとめると
UIの変更に迅速に対応するためにクライアントがfetchする情報を柔軟に変えられる
クエリをコロケーションしてUIのコードと同じデータ構造でレスポンスを受け取れること →全体的にUIの開発が楽になる
サーバー間通信
UIで使用されることを想定していないAPI
モニタリング、クエリの制限、N+1, キャッシュ...
---