RESTful vs GraphQL


GraphQLとは

まずGraphQLとは、API作成の仕組みとしてRESTの代わりに使えます。クライアント側からサービスに必要なデータをあらかじめ記述し取得できるAPIのためのクエリ言語です。

RESTful vs GraphQL

複数回のREST APIを叩くことで欲しいデータが手に入れます。例えば、

  1. GET /users/{id} - user情報を取得する

  2. GET /users/{id}/posts - userに紐づいてるpost情報を取得

  3. 请求/users/{id}/followers,userに紐づいてるfollower情報を取得

イメージ図は以下となります:

GraphQLを使うなら、一回だけでuser情報、post情報、follower情報を取得できます:


引用元:GraphQL vs REST - A comparison

GraphQLを何故使うのか

一言いうなら、クライアント側欲しいデータ != REST APIのリスポンスデータという問題を解決するためです。

REST APIの改善すべきところ

いらないデータがREST APIのリスポンスに含まれています

例えば、ユーザー情報リスト画面を作成する時に、ユーザー情報を取得するため /user という エンドポイント をアクセスし、リスポンスを取得できますが、誕生日や住所などの画面にいらない情報もたくさん含まれ、無駄になります。

REST APIのリスポンスデータから取得するデータが足りない

例えば、ユーザー情報リスト画面を作成する時に、画面表示に必要な情報「性別」がREST APIのリスポンスに含まれていなければ、まだ他のエンドポイントにアクセスし(例えば/uesr/{id}/detail)、足りていない分を取得する面倒を起こします。

まとめ

今回はGraphQLについて簡単にまとめましたが、GraphQLを導入することでAPIサーバの実装が難しくなるのではないかという懸念を次回に解消していこうと思います。