📘

GraphQLが400 Bad Request(transport not supported)を返すと思ったらGETメソッドだった

2022/12/24に公開

runnでGraphQL(gqlgen)エンドポイント向けのYAMLを書き始めたときにハマったメモ。

リクエストbodyは正しいはずなのにテストが失敗するので--debugオプションで見てみたところ、以下のエラーが返ってきていた。

HTTP/1.1 400 Bad Request
...
{"errors":[{"message":"transport not supported"}],"data":null}

graphql "transport not supported"」で検索すると、リクエストヘッダに

Content-Type: application/json

を指定すれば解決するという記事をいくつか見かけたが、Content-Typeはちゃんと指定している。

何度もテストシナリオを見直していると、なぜかそのテストだけGETメソッドになっていることに気づいた。。。

GraphQLは参照系でもPOSTメソッドなのでPOSTメソッドに修正したところうまくいったという、本当に初歩的な話でした。

Discussion