GraphQL と gRPC と REST についての云々
読了まで:約2分
この
GraphQL と gRPC と REST の違い
基本的に、
Web Services の
API を 提供する
と
- [[GraphQL]]
- クエリ言語を
コアと して、 そこから 色々 実装を 生やす
- クエリ言語を
- [[gRPC]]
- API を
RPC と して 定義し、 実装を 自動生成ベースで 生やす
- API を
- [[REST]]
- HTTP の
セマンティクスを ベースと した設計思想。 実装は 各自が 適宜用意する
- HTTP の
そのため、
- GraphQL
- 従来の
JSON や XML ベースの API 問合せを 柔軟に 改良したい
- 従来の
- gRPC
- Protobuf の
RPC を HTTP/2 などに 載せて、 PRC over http を カッチリと 実現したい
- Protobuf の
- REST
- HTTP ベースでのリソース表現を
綺麗に 表現したい
- HTTP ベースでのリソース表現を
と
GraphQL と gRPC と REST は共存できる
まぁ、
- GraphQL は
クエリ言語 - gRPC は
RPC API の 為の Specs と Toolchain - REST は
API の 為の 設計 思想
なので、
_ REST の
設計 思想に 従いつつ、 gRPC ベースの 問い 合わせの 中で GraphQL を 使う _
と
GraphQL と gRPC と REST の使い分け
個人的には、
- GraphQL
- [[非構造化データ]] の
API 問合せの 際の クエリ言語と して 使う
- [[非構造化データ]] の
- gRPC
- [[構造化データ]] の
RPC API を 実装する 際に 使う
- [[構造化データ]] の
- REST
- API だけではなく、
[[Web Services]] 全体の [[URL 設計指標]] と して 使う
- API だけではなく、
そのため、
以上
まぁ、
GraphQL と
gRPC と REST は 対立項目ではなく、 それぞれを 適切に 組み合わせる 事も 出来る 類いの モノ
と