📊
Web開発:GraphQLとREST APIの違いを解説
GraphQL
とREST API
の違いを理解するための基本的なガイドです!✍
このガイドでは、現代のウェブ開発における2つの主要なAPI設計パラダイム、GraphQL
とREST API
の基本的な違いを探ります。それぞれのフローと主要な用語、そしてエンドポイントの取り扱いの違いに焦点を当てて説明します。
GraphQLのフロー
- クライアントはGraphQLサーバーに
クエリ
またはミューテーション
を送信します。 - GraphQLサーバーはリクエストを受け取り、適切な
リゾルバ
を呼び出します。 -
リゾルバ
はサービス
層を介して、または直接データソースからデータを取得又は変更します。 - データはクライアントに返され、クライアントはデータを使用します。
REST APIのフロー
- クライアントはAPIサーバーに
HTTPリクエスト
(GET, POST, PUT, DELETE, PATCH等)を送信します。 -
コントローラ
はリクエストを受け取り、適切なサービス
メソッドを呼び出します。 -
サービス
はビジネスロジックを実行して、必要に応じてデータソースからデータを取得または変更します。 - データはクライアントに返され、クライアントはデータを使用します。
エンドポイントの取り扱いの違い
GraphQL
とREST API
のエンドポイントの取り扱いには大きな違いがあります。
REST API
- 多数のエンドポイント:
REST API
はリソースごとに異なるエンドポイントを持つことが一般的です。
たとえば、/users でユーザー情報を、/orders で注文情報を取得します。 - HTTPメソッド:
REST API
はHTTPメソッド(GET, POST, PUT, DELETEなど)を使用して、
異なるタイプのリクエストを行います。
GraphQL
- 単一のエンドポイント:
GraphQL
は一般的には単一のエンドポイント(例:/graphql)を使用します。クライアントはこのエンドポイントを通じてクエリ(データの取得)やミューテーション(データの変更)を行います。これによって、クライアントは必要なデータの構造を具体的に指定できるため、オーバーフェッチング
(必要以上のデータが返される)やアンダーフェッチング
(必要なデータが一度のリクエストで得られない)を避けることができます。またエンドポイントの管理も簡素になります。
自らの備忘録のために投稿してますが、なにかお役に立てましたら幸いです!👏
また、なにか間違ってましたらご指摘いただけますと幸いです!🙏
Discussion