8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RESTful vs GraphQL

Last updated at Posted at 2019-05-06

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情報を取得

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

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

graphQL.png
引用元:GraphQL vs REST - A comparison

GraphQLを何故使うのか

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

REST APIの改善すべきところ

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

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

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

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

まとめ

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

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?