REST APIは決まった入口へお願いする方式、GraphQLは欲しい項目を指定してお願いする方式。
どちらもAPIですが、データの取り出し方が違います。
REST APIは「決まった入口」を使う
REST APIでは、ユーザー一覧なら /users、投稿一覧なら /posts のように、用途ごとに入口を分けてデータを取得します。
入口ごとに返ってくる内容がある程度決まっているため、構造が読みやすく、一覧画面・詳細画面・登録画面のような定番のWebアプリで使いやすい方式です。
/users や /posts のように、対象ごとにURLを用意する。
GETやPOSTなどのメソッドで、取得・作成・更新を伝える。
シンプルな一覧・詳細・登録の画面では理解しやすい。
GraphQLは「欲しい項目」を指定する
GraphQLでは、アプリ側が「ユーザー名と投稿タイトルだけほしい」のように、必要な項目をまとめて指定できます。
複数のデータを1つの画面に集めたいとき、REST APIだと何度も入口へ取りに行くことがあります。GraphQLでは、必要な形をリクエスト側で指定しやすいのが特徴です。
画面で使うデータだけを選んで受け取りやすい。
ユーザー、投稿、コメントなどを1回のお願いで扱いやすい。
クエリの書き方や型の考え方を理解する必要がある。
返ってくるデータ量の違い
REST APIでは、入口ごとに用意された形でデータが返ります。そのため、画面で使わない項目まで一緒に返ることがあります。
GraphQLでは、必要な項目を指定できるため、使うデータだけを受け取りやすくなります。ただし、どの項目をどう指定するかをアプリ側が考える必要があります。
どちらを使うかは画面とチームで決まる
REST APIは、考え方が広く知られていて、シンプルな画面を作るときに扱いやすいです。APIの入口と画面の役割が対応しやすいため、初心者にも追いやすい構成になります。
GraphQLは、1つの画面で複数種類のデータを柔軟に組み合わせたいときに便利です。一方で、最初の設計や運用の考え方はREST APIより少し複雑になりやすいです。
一覧、詳細、登録など、画面とデータの対応が素直な場合。
1画面に複数のデータを集め、必要な項目を細かく選びたい場合。
まずはREST APIで考え、取得が複雑になったらGraphQLも候補にする。
ここまでのまとめ
REST APIとGraphQLは、どちらもアプリとサーバーがデータをやり取りするためのAPIです。REST APIは決まった入口からデータを取り、GraphQLは欲しい項目を指定してデータを取ります。
REST APIは「入口を選ぶ」、GraphQLは「欲しい項目を選ぶ」。まずはこの違いで見ると、全体像をつかみやすくなります。
このUIを実装してみよう