API 関連技術のメモ
APIの通信関連の技術についての雑なメモです.
まとめでなくメモです.比較として妥当かは微妙なのでその辺もその内まとめます.とりあえず利点と用途に絞って調査.
実際に使ったわけでないので間違っているかもしれません.
Open API
https://swagger.io/resources/open-api/
RESTful APIのスキーマをYAML・JSON定義できる.
通信自体はRESTful APIなのでHTTP.
ドキュメント生成などがメイン機能やスタブの生成ができる
GraphQL
クエリ言語.スキーマを定義しておくことで,必要なリソースをクライアント側で指定できる.そのため,RESTと異なり単一のエンドポイントでよい.
基本的にインターフェースはJSONのよう.(多分)
メリット
- 余分なデータを受け取らない
- 要らないデータ分のデータ通信量が減る
- サーバ側のAPI修正が不要
- リソースは,型とフィールドによって整理できる
gRPC
インターフェースはProtocol Buffersがある.
Protocol BuffersはGoogle製のインターフェース定義言語(IDL).
データをバイナリシリアライズするので速いらしい.
似たようなものでMessage Packというのもあり,こちらはスキーマ定義しないが高速なよう.
参照
OpenAPI
https://qiita.com/teinen_qiita/items/e440ca7b1b52ec918f1b
https://techblog.zozo.com/entry/openapi3/go
GrapQL
https://qiita.com/SiragumoHuin/items/cc58f456bc43a1be41b4
gRPC
https://qiita.com/disc99/items/cfca50a32240284578bb
https://qiita.com/oohira/items/63b5ccb2bf1a913659d6
https://uqichi.net/posts/protocol-buffer-message-pack/