📊

Web開発:GraphQLとREST APIの違いを解説

2023/09/16に公開

GraphQLREST APIの違いを理解するための基本的なガイドです!✍

このガイドでは、現代のウェブ開発における2つの主要なAPI設計パラダイム、GraphQLREST APIの基本的な違いを探ります。それぞれのフローと主要な用語、そしてエンドポイントの取り扱いの違いに焦点を当てて説明します。

GraphQLのフロー

  1. クライアントはGraphQLサーバーにクエリまたはミューテーションを送信します。
  2. GraphQLサーバーはリクエストを受け取り、適切なリゾルバを呼び出します。
  3. リゾルバサービス層を介して、または直接データソースからデータを取得又は変更します。
  4. データはクライアントに返され、クライアントはデータを使用します。

REST APIのフロー

  1. クライアントはAPIサーバーにHTTPリクエスト(GET, POST, PUT, DELETE, PATCH等)を送信します。
  2. コントローラはリクエストを受け取り、適切なサービスメソッドを呼び出します。
  3. サービスはビジネスロジックを実行して、必要に応じてデータソースからデータを取得または変更します。
  4. データはクライアントに返され、クライアントはデータを使用します。

エンドポイントの取り扱いの違い

GraphQLREST APIのエンドポイントの取り扱いには大きな違いがあります。

REST API

  • 多数のエンドポイント:
    REST APIはリソースごとに異なるエンドポイントを持つことが一般的です。
    たとえば、/users でユーザー情報を、/orders で注文情報を取得します。
  • HTTPメソッド:
    REST APIはHTTPメソッド(GET, POST, PUT, DELETEなど)を使用して、
    異なるタイプのリクエストを行います。

GraphQL

  • 単一のエンドポイント:
    GraphQLは一般的には単一のエンドポイント(例:/graphql)を使用します。クライアントはこのエンドポイントを通じてクエリ(データの取得)やミューテーション(データの変更)を行います。これによって、クライアントは必要なデータの構造を具体的に指定できるため、オーバーフェッチング(必要以上のデータが返される)やアンダーフェッチング(必要なデータが一度のリクエストで得られない)を避けることができます。またエンドポイントの管理も簡素になります。

https://nextjs.org/learn/dashboard-app/fetching-data

自らの備忘録のために投稿してますが、なにかお役に立てましたら幸いです!👏
また、なにか間違ってましたらご指摘いただけますと幸いです!🙏

Discussion