ただの技術メモ

個人備忘録

GraphQLのリクエストとレスポンスの形式を確認する

HTTPについて考えていて、ふとGraphQLってどんな感じで通信されているか意識したことがなかったのでメモしておきます。

ドキュメント

ドキュメントを見ると、GraphQLはGETメソッドまたはPOSTメソッドで扱うことができるみたいです。

graphql.org

GETメソッドの場合は、queryというクエリパラメーターにGraphQLのクエリを付与するようです。

http://myapi/graphql?query={me{name}}

POSTメソッドの場合は、コンテンツタイプをapplication/jsonにして、以下の形式でJSONエンコードしたものをボディに入れてリクエストするようです。

{
  "query": "...",
  "operationName": "...",
  "variables": { "myVariable": "someValue", ... }
}

レスポンスは以下のJSON形式です。

{
  "data": { ... },
  "errors": [ ... ]
}

実際に見てみる

chromeのdev toolで見てみます。

リクエストは以下の通り

f:id:chann_r:20211218115319p:plain
リクエス

ちゃんとHeadersのcontent-typeapplication/jsonになっていて、メソッドはPOST、ボディもドキュメントの通りの形式になっていますね。

レスポンスは以下の通り

f:id:chann_r:20211218115319p:plain
レスポンス

レスポンスもちゃんとdataというフィールドが返ってきています。

errorsについてはエラーがない場合は返されないようです。

よく見ると、ドキュメントに書いてました。

If there were no errors returned, the "errors" field should not be present on the response.

ライブラリやPlaygroundでいい感じになっていて、あまりリクエストやレスポンスの詳細は意識することがなかったので今後は意識してみます。