STERFIELD

GraphQLを触ってみました〜REST APIとGraphQLの決定的な違い

GraphQLを触ってみました〜REST APIとGraphQLの決定的な違い

GraphQLとは


GraphQL は、アプリケーション・プログラミング・インタフェース (API) 向けのクエリ言語とサーバーサイドランタイムの両方を指します。クライアントがリクエストしたデータだけを提供することを優先します。
GraphQL は、API の速度、柔軟性、開発者にとっての使いやすさを向上させるために設計されました。GraphiQL と呼ばれる統合開発環境 (IDE) にデプロイすることもできます。GraphQL は REST の代わりに、データを複数のデータソースから取得するリクエストを 1 つの API 呼び出しで構成できます。

 

REST APIとは

REST APIとは、Webシステムを外部から利用するためのプログラムの呼び出し規約(API)の種類の一つで、「REST」(レスト)と呼ばれる設計原則に従って策定されたもの。RESTそのものは適用範囲の広い抽象的なモデルだが、一般的にはRESTの考え方をWeb APIに適用したものをRESTful APIと呼んでいる。

 

REST APIの例

一般公開されているThe Star Wars APIを(SWAPI)使って説明します。

Luke Skywalkerの情報を取得する場合、URI(エンドポイント)は以下になります。

https://swapi.dev/api/people/1

 

C-3POの情報を取得する場合、URI(エンドポイント)は以下になります。

https://swapi.dev/api/people/2

REST APIのデメリット

多くの情報が返ってきますが、仮にアプリケーションで必要となるデータが名前(name)のみだった場合、それ以外のデータは不要なデータとなります。こういったデータはメモリに積まれるため、APIの使い方次第ではメモリリークにも繋がります。つまり、本当に必要なデータのみだけでなく不要なデータもレスポンスとして返されることがあります。

GraphQLをNode.jsとexpressでためしてみる

server/app.js

server/schema/schema.js

実行結果

コメント(//dummy data)の下に、本と作家の配列を書いています。

特定の作家の情報を取得するとき

特定の本の情報を取得するとき

 

GraphQLを使うメリット

  • GraphQLを使うと、1回のHTTPリクエストで複数の異なる種類のデータを受け取ることが可能に
    RESTなどのように
  • レスポンスのデータを使ってさらにリクエストを送る、といったことを何往復も繰り返す必要がなくなる
    過剰なデータ取得を抑えられる
  • クライアントの変更に伴う新たなエンドポイント作成の必要がなくなる(GraphQLは基本的に単一のエンドポイント )

Author Profile

著者近影

スターフィールド編集部

SHARE

合わせて読みたい