Open2

GraphQLの使い所を知る

つけ麺テキーラつけ麺テキーラ

普段OpenAPIを使ってAPIを作ることが多いが、よく聞く選択肢にgRPCやGraphQLがある。
gRPCは前の職場で触ったことがあるのだが、 GraphQLを使うタイミングが全くないのでこの機会に理解をしようと思う。

まずは公式サイトを見つつ、RoadmapのGraphQLを参考にして学ぶ
https://graphql.org/
https://roadmap.sh/graphql

つけ麺テキーラつけ麺テキーラ

GraphQL とは

  • クライアントが欲しい情報を取って来れるように指示したクエリ言語
  • RESTと異なり単一のエンドポイントで構成される(大体 /graphql or /query のケースが多いらしい)
  • HTTP上でデータをやり取りすることが多いが、仕様としてそう決まっているわけではないらしい。

クライアント→サーバーへのアクセス方法

  • サーバーに投げる方法は3種類ある
    • Queries(RESTのGETに相当)
      • 並列で投げることができる
    • Mutation(RESTのPOST, DELETE に相当)
      • 直列で処理されることが保証されている
    • Subscription(サーバー → クライアントへのリアルタイム通信)
      • 内部的に Websocket を使用しているらしい(仕様として強制しているわけではなさそう)
  • クエリの書き方
    • Operation name と呼ばれるクエリの名前 HeroNameAndFriends は複数投げる時は必須だが、サーバー側のログ等に出せるので本番運用をする上では入れるのがいいらしい
    • 変数もある。Reactで使われていたので、TypeScriptみたいという印象を受けた
query HeroNameAndFriends {
  hero {
    name
    friends {
      name
    }
  }
}