0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

REST APIとGraphQLのメリット・デメリットを調べてみた

Last updated at Posted at 2023-06-28

イントロダクション

REST APIとGraphQLそれぞれのメリット・デメリットについて調べてみました。

REST APIとは

昔からあるアーキテクチャです。
HTTPメソッド(GET、POST、PUT、DELETEなど)を使用してAPIがどういう振る舞いをするか定義します。
一つのURLに対してHTTPメソッドを指定することで「GET」なら取得、「POST」なら作成、「PUT」なら更新、「DELETE」なら削除のように処理を定義する考え方です。

GraphQLとは

Facebook社(現在はMeta社)がREST APIが抱える問題を解決するために、開発したクエリ言語です。
APIのためのクエリ言語であり、必要なデータの構造を定義することで、必要なデータのみが返されます。
したがって、必要以上に大きなデータが返されるのを防ぐことができるのが特徴です。

GraphQL 公式サンプル
https://graphql.org/learn/queries/

メリット

REST API

  • HTTPメソッドにGET、POST、PUT、DELETEなどを指定し、振る舞いを定義するので、理解しやすく、開発しやすい。
  • HTTPのキャッシング使える。これにより、クライアントは同じリソースに対してキャッシュを使用することで、ネットワークトラフィックを削減することができる。
  • リクエストに対してエンドポイントが分かれているので、複雑なリクエストも管理しやすい。

GraphQL

  • クライアントが必要なデータのみを取得できる。
    例えば、クエリによってデータのフィールドやリレーションシップを指定することができるため、余計なデータを取得することを回避できる。
  • 1つのエンドポイントを通じてデータにアクセスするので、複数のリクエストを送る必要がない。

デメリット

REST API

  • エンドポイントで定義してるレスポンスは全て取得する。
    それによってオーバーフェッチ(過剰取得)が発生したり、逆にレスポンスに定義の少なすぎてアンダーフェッチ(過小取得)が発生する。
  • REST APIは思想なのでGETなのに実はinsertしてたり、POSTなのに取得していたり、実装者によってばらつきが生まれやすい。

GraphQL

  • 比較的新しい技術なので学習コストが生まれる。
  • クエリ言語なのでクエリが複雑になる可能性がある。
  • そのため、小規模なシステムには向かない。
  • REST APIのようなWEBのキャッシングが効かないので、その辺を考慮する必要がある。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?