Open2
GraphQLの使い所を知る
普段OpenAPIを使ってAPIを作ることが多いが、よく聞く選択肢にgRPCやGraphQLがある。
gRPCは前の職場で触ったことがあるのだが、 GraphQLを使うタイミングが全くないのでこの機会に理解をしようと思う。
まずは公式サイトを見つつ、RoadmapのGraphQLを参考にして学ぶ
GraphQL とは
- クライアントが欲しい情報を取って来れるように指示したクエリ言語
- RESTと異なり単一のエンドポイントで構成される(大体
/graphql
or/query
のケースが多いらしい) - HTTP上でデータをやり取りすることが多いが、仕様としてそう決まっているわけではないらしい。
クライアント→サーバーへのアクセス方法
- サーバーに投げる方法は3種類ある
- Queries(RESTのGETに相当)
- 並列で投げることができる
- Mutation(RESTのPOST, DELETE に相当)
- 直列で処理されることが保証されている
- Subscription(サーバー → クライアントへのリアルタイム通信)
- 内部的に Websocket を使用しているらしい(仕様として強制しているわけではなさそう)
- Queries(RESTのGETに相当)
- クエリの書き方
-
Operation name
と呼ばれるクエリの名前HeroNameAndFriends
は複数投げる時は必須だが、サーバー側のログ等に出せるので本番運用をする上では入れるのがいいらしい - 変数もある。Reactで使われていたので、TypeScriptみたいという印象を受けた
-
query HeroNameAndFriends {
hero {
name
friends {
name
}
}
}