调查了REST API和GraphQL的优缺点
引言
我已经调查了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 – REST接口
-
- HTTPメソッドにGET、POST、PUT、DELETEなどを指定し、振る舞いを定義するので、理解しやすく、開発しやすい。
-
- HTTPのキャッシング使える。これにより、クライアントは同じリソースに対してキャッシュを使用することで、ネットワークトラフィックを削減することができる。
- リクエストに対してエンドポイントが分かれているので、複雑なリクエストも管理しやすい。
GraphQL
图灵程序设计语言
-
- クライアントが必要なデータのみを取得できる。
-
- 例えば、クエリによってデータのフィールドやリレーションシップを指定することができるため、余計なデータを取得することを回避できる。
- 1つのエンドポイントを通じてデータにアクセスするので、複数のリクエストを送る必要がない。
缺点
REST API 可简化应用程序之间的通信,并提供以一种统一的方式访问和操作资源的能力。
-
- エンドポイントで定義してるレスポンスは全て取得する。
-
- それによってオーバーフェッチ(過剰取得)が発生したり、逆にレスポンスに定義の少なすぎてアンダーフェッチ(過小取得)が発生する。
- REST APIは思想なのでGETなのに実はinsertしてたり、POSTなのに取得していたり、実装者によってばらつきが生まれやすい。
GraphQL (用中文翻譯:图形查询语言)
-
- 比較的新しい技術なので学習コストが生まれる。
-
- クエリ言語なのでクエリが複雑になる可能性がある。
-
- そのため、小規模なシステムには向かない。
- REST APIのようなWEBのキャッシングが効かないので、その辺を考慮する必要がある。