REST API と GraphQL の違い

はじめに

今回業務で、NetBox を使用する機会がありました。その際、データの取得方法として、REST API と GraphQL があることを知りました。それぞれメリット/デメリットがあるためまとめてみました。

REST API とは

REST(Representational State Transfer)の略で以下の4原則に基づいています。

  1. 統一インターフェース
    • 統一したルールに基づいてやり取りをすること(GET・POST・PUT・DELETE等)
  2. アドレス可能性
    • それぞれのリソースが一意のURIを持っていること(例: users/  ユーザーに関する情報を表す)
  3. 接続性
    • API同士が「リンクでつながる」仕組みのこと
  4. ステートレス性
    • 状態を持たないこと(前回のリクエスト情報を保持しない)

メリット

  • 設計がシンプルでわかりやすい
  • HTTPキャッシュを利用することで、リソースにアクセスする際にキャッシュされたデータを活用でき、サーバーへのリクエスト回数を大幅に減らすことができる
  • ライブラリが充実しているため、開発効率が高い

デメリット

  • エンドポイントごとに取得するため、余分なデータを取得してしまう
  • 必要なデータをそろえるために複数のリクエストを呼び出すことになる可能性がある
  • APIの仕様変更が発生する場合、クライアントに影響を与えないためにバージョン管理を行う必要がある

GraphQLとは

Facebookが開発した APIクエリ言語 です。データをやり取りする際にクライアントが必要なデータのみをリクエストし、取得できる仕組みを提供しています。

メリット

  • 必要なデータのみを指定して取得するので、不要なデータ取得が発生しない。
  • すべてのリクエストが一つのエンドポイントで処理されるのため、一回のリクエストで関連データを全て取得できる
  • Subscriptionを使うことでリアルタイムでデータ更新ができる

デメリット

  • クライアントが自由にクエリ作成できるため、複雑なクエリによりサーバーの負荷が増加する可能性がある
  • 一つのエンドポイントで全てのリクエストを処理するため、HTTPキャッシュが使いにくい
  • データの取得に関して一部だけ失敗した場合に、エラーハンドリングを行うのが難しい

まとめ

取得したいデータの関係性が複雑であったり、リアルタイム性が必要な場合はGraphQL、シンプルなデータ構造や、キャッシュなどを柔軟に使用したい場合はREST APIがおすすめです。

--------------------------
開発支援・技術研修のご要望・ご相談はこちらから
--------------------------
【この技術ブログを読んだエンジニアの皆様へ】
カサレアルブログをお読みいただき、ありがとうございます!

私たちは、常に新しい技術に挑戦し、ユーザーのニーズに応えるサービスを提供しています。
もし、当社の技術への情熱や、会社・チーム・社員の雰囲気に共感いただけたなら、
ぜひ私たちと一緒に働きませんか?
現在、株式会社カサレアルでは事業拡大に伴い、新たな仲間となるエンジニアを積極的に募集しています。

少しでも興味をお持ちいただけましたら、まずは弊社のことを知っていただけると嬉しいです。
▼採用サイト
https://www.casareal.co.jp/recruit/career
▼社員インタビュー
https://hrmos.co/pages/casareal/jobs/0000016
▼エンジニアの仲間になる! エントリーはこちらから
https://hrmos.co/pages/casareal/jobs

皆様のエントリーを心よりお待ちしています!

新人研修でSvelteKitを使うと、新人の理解が早かった話

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

コメント ※

名前 ※

メール ※

サイト