GraphQLとREST APIの違いを簡単に解説

まずは、これだけ

REST APIは決まった入口へお願いする方式、GraphQLは欲しい項目を指定してお願いする方式。
どちらもAPIですが、データの取り出し方が違います。

REST APIは決まった入口へリクエストし、GraphQLは欲しい項目だけを指定してリクエストする違いを示した図解
REST:入口ごとにお願いする GraphQL:欲しい項目を指定する

REST APIは「決まった入口」を使う

REST APIでは、ユーザー一覧なら /users、投稿一覧なら /posts のように、用途ごとに入口を分けてデータを取得します。

入口ごとに返ってくる内容がある程度決まっているため、構造が読みやすく、一覧画面・詳細画面・登録画面のような定番のWebアプリで使いやすい方式です。

入口が分かれる

/users/posts のように、対象ごとにURLを用意する。

操作が読みやすい

GETやPOSTなどのメソッドで、取得・作成・更新を伝える。

定番構成に強い

シンプルな一覧・詳細・登録の画面では理解しやすい。

GraphQLは「欲しい項目」を指定する

GraphQLでは、アプリ側が「ユーザー名と投稿タイトルだけほしい」のように、必要な項目をまとめて指定できます。

複数のデータを1つの画面に集めたいとき、REST APIだと何度も入口へ取りに行くことがあります。GraphQLでは、必要な形をリクエスト側で指定しやすいのが特徴です。

RESTはまとまったデータが返り、GraphQLは選んだ項目だけが返る違いを食事の注文にたとえた図解
GraphQLは、欲しい項目を注文シートで選ぶように指定できる、と考えると分かりやすくなります。
必要な項目だけ

画面で使うデータだけを選んで受け取りやすい。

複数データをまとめる

ユーザー、投稿、コメントなどを1回のお願いで扱いやすい。

学ぶことは少し増える

クエリの書き方や型の考え方を理解する必要がある。

返ってくるデータ量の違い

REST APIでは、入口ごとに用意された形でデータが返ります。そのため、画面で使わない項目まで一緒に返ることがあります。

GraphQLでは、必要な項目を指定できるため、使うデータだけを受け取りやすくなります。ただし、どの項目をどう指定するかをアプリ側が考える必要があります。

1 画面を作る 必要なデータが決まる
2 REST 入口ごとの形で取得する
3 GraphQL 欲しい項目を指定する
4 受け取る JSONなどで結果が返る
5 表示する 画面にデータを並べる

どちらを使うかは画面とチームで決まる

REST APIは、考え方が広く知られていて、シンプルな画面を作るときに扱いやすいです。APIの入口と画面の役割が対応しやすいため、初心者にも追いやすい構成になります。

GraphQLは、1つの画面で複数種類のデータを柔軟に組み合わせたいときに便利です。一方で、最初の設計や運用の考え方はREST APIより少し複雑になりやすいです。

REST APIは定番の画面、GraphQLは複雑な画面に向いていることを比較した図解
REST APIとGraphQLは優劣ではなく、画面の複雑さやチームの慣れに合わせて選ぶものです。
REST APIが合いやすい

一覧、詳細、登録など、画面とデータの対応が素直な場合。

GraphQLが合いやすい

1画面に複数のデータを集め、必要な項目を細かく選びたい場合。

迷ったら

まずはREST APIで考え、取得が複雑になったらGraphQLも候補にする。

ここまでのまとめ

REST APIとGraphQLは、どちらもアプリとサーバーがデータをやり取りするためのAPIです。REST APIは決まった入口からデータを取り、GraphQLは欲しい項目を指定してデータを取ります。

REST APIは「入口を選ぶ」、GraphQLは「欲しい項目を選ぶ」。まずはこの違いで見ると、全体像をつかみやすくなります。