のようなクエリをクライアントが発行することになります。 なぜこのようなシステムが必要かの説明の前に、RESTの問題点を挙げてみます。 RESTの問題点 Server Side Renderingの場合 コントローラでEager Loading等のクエリ最適化を意識しないといけない ビューを実装するときも結局裏側でどのようなクエリが発生するかを意識しないといけない Client Side Renderingの場合 コンポーネント毎に必要な情報をリクエストする場合、AJAXリクエストを何度も発行する必要がある 提供されているAPIが不十分だと、クライアント側でテーブル結合が必要となる 共通する問題 クライアント毎にちょっとずつ違うAPIを用意してメンテしないといけない 端末に応じて異なるサイズの画像を返す ネイティブアプリとウェブアプリで異なる結果を返す 等など APIに「暗黙的な契約」が発生
![RESTの次のパラダイムはGraphQLか - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/a7c8e035f72aeb434a6cf7069e4deb83939a5397/height=288;version=1;width=512/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fqiita-fb-fe28c64039d925349e620ba55091e078.png)