GraftQL マニュアル
変更履歴

クエリの送信とレスポンス

組み立てたクエリを HTTP で送信し、レスポンスとエラーの分類を確認する操作を説明します。

概要

送信は「組み立てたクエリ × 選択中の環境」で行います。HTTP 通信は端末側(GalleonQL 本体)から発行される ため、ブラウザの CORS 制限を受けません。フロントから直接アクセスできない社内 API でも、GalleonQL の デスクトッププロセスから到達できれば送信できます。応答は 4 つのタブで確認でき、エラーは起因ごとに 分類して表示されます。用語は 主要な用語 を参照してください。

前提

  • 送信先の環境が選択され、解決後 URL が確定していること(未解決の {{...}} が残っていると送信できません。 環境の登録・切替)。
  • クエリビルダー でルートフィールドを 1 件以上追加していること (0 件の間は送信できません)。
  • スキーマの取込は送信の必須条件ではありません(送信バーとレスポンス領域は未取込でも表示されます)。 ただしクエリの組み立てには取込が必要です(スキーマの取り込み)。

画面上の位置

画面は横 3 ペイン(左=リクエスト / 中央=レスポンス / 右=スキーマ)です。左ペインのタブは Query | Auth | Headers送信バーは左ペインの Query タブにあり、上から クエリビルダー → Generated Query パネル → 送信バー(HTTP メソッドセレクタ + ▶ 送信 + ステータス行) の順です。レスポンスは中央ペインに表示されます。Auth / Headers タブには送信ボタンはありません。

操作手順

1. 環境とクエリを用意する

  1. トップバーの環境セレクタで送信先の環境を選び、解決後 URL が表示されていることを確認します (空や未解決の {{...}} のままだと送信できません)。
  2. 認証が必要なら、環境エディタの「認証」節で既定方式と秘密を設定します (環境の登録・切替)。
  3. 必要なら Auth / Headers タブを確認します(下記)。
  4. Query タブでクエリを組み立てます(クエリビルダー)。Generated Query の内容が そのまま送信本文になります。

Auth タブ(リクエストの認証方式)

左ペインの Auth タブで認証方式を選びます。秘密(鍵)は選択中の環境に保存され、 エクスポートには漏れません。

選択肢 意味
環境の既定を継承 選択中環境の既定方式と秘密を使う(リクエストの既定)
Bearer 環境の Bearer トークンから Authorization: Bearer … を組み立てる
Basic 環境の Basic ユーザー名/パスワードから Authorization: Basic … を組み立てる

「環境の既定を継承」では鍵入力欄は出ません(鍵は環境エディタの「認証」節)。Bearer / Basic を選ぶと 鍵入力欄が出て、入力値は選択中環境の秘密として保存されます。環境未選択で Bearer / Basic を選ぶと 「環境を選択すると鍵を入力できます。」と表示されます。空トークン等の警告は 環境の登録・切替 と同じ文言です。

Headers タブ(認証の ON/OFF・リクエスト固有ヘッダー・最終プレビュー)

左ペインの Headers タブの一番上に [✓] 認証を使う チェックがあります。

  • ON … 認証ヘッダーを組み立てる(Auth タブの方式を使う)。
  • OFF … Authorization を付けない(方式は保持したまま。再 ON で戻る)。

その下の「このリクエスト固有」節で、この送信にだけ載せたいヘッダー(由来 R)を追加・編集・削除できます。 ヘッダー名(例 X-Request-Id)と値を入れて「ヘッダーを追加」。値には {{envVar}} を書けます (選択中の環境で解決されます)。最下部の「送信される最終ヘッダー」に、カスケード・変数解決した結果が 由来バッジ付きで表示されます(環境の登録・切替 の「ヘッダーのカスケード」参照)。

リクエスト固有ヘッダー・認証方式・組み立て中の内容・HTTP メソッドは自動保存され、起動時や プロジェクト切替時に復元されます(環境切替では載せ替えません)。レスポンス本文は保存されず、 タブを切り替えると Response ペインはリセットされます。

2. HTTP メソッドを選び「▶ 送信」を押す

送信バー左のメソッドセレクタで HTTP メソッドを選びます(既定 POST)。

メソッド 送信の仕方
POST JSON body { "query": "..." }(変数モードでは { "query": "...", "variables": {…} })+ Content-Type: application/json
GET body なし。URL に query パラメータを URL エンコードして付与(変数モードでは &variables=<URL エンコードした JSON> も併せて付与)
UPDATE POST と同じ body(UPDATE は標準メソッドではありません)
DELETE POST と同じ body(JSON)

クエリビルダーの入力モードが変数のときは、生成された variables(JSON)も一緒に送信されます(POST 系はボディに、 GET は &variables= パラメータに)。インラインのときは従来どおりクエリ本文だけを送り、variables は付きません (クエリビルダー の入力モードの切替)。

引数の値に書いた {{環境変数}} は、クエリ本文・variables とも送信時に選択中の環境の値へ解決されてから送られます (未解決のキーが残っていても送信はブロックされず警告のみ)。解決後の内容は Generated Query の「最終形(解決後)」 トグルで確認でき、履歴や保存には元の {{...}} がそのまま残ります(ヘッダー・URL の {{...}} も同様に解決されます)。

▶ 送信 をクリックすると、送信中はラベルが 送信中... に変わりボタンが無効化されます。応答が返ると、 ステータス行に HTTP {ステータス} · {所要時間} ms(例 HTTP 200 · 1234 ms)が表示されます。 ネットワーク到達前に失敗した場合は 失敗 · {所要時間} ms です。未送信時は 未送信

3. レスポンスを確認する

中央ペイン(Response)の見出し右に、送信バーと同じ形式のメタ情報が表示されます。パネル内の 4 タブで 見方を切り替えます。

タブ 内容
レスポンス ボディを JSON として解析した折りたたみ可能なツリー(既定は全展開)
raw サーバから受け取ったボディ文字列を加工せずそのまま表示
Request Header 送信時に実際に使ったヘッダーを由来バッジ付きで表示
Response Header レスポンスヘッダーを全件表示(同名の重複・受信順序もそのまま)
  • 「レスポンス」タブは行の (折りたたむ)/ (展開)で切り替えます。新しい応答が来ると全展開へ リセットされます。JSON として解析できないボディは「JSON として解析できないためツリー表示できません。 raw タブで原文を確認してください。」と案内されます。
  • Request Header の由来バッジは A(アプリ)/ P(プロジェクト)/ E(環境)/ Au(認証)/ R(リクエスト)/ 無印(送信時に合成される Content-Type 等)です。

4. エラー・部分エラーの見方

GraphQL は HTTP 200 でも errors[] を返すことがあります。GalleonQL はエラーの起因を分類して表示します。

完全なエラー(成功データなし) は Response 上部に赤字で [分類名] メッセージ として表示されます。

分類 主な原因
ネットワークエラー 接続失敗・タイムアウト・TLS/DNS など、HTTP 応答自体が得られない
認証エラー HTTP 401 / 403
クライアント(クエリ)エラー HTTP 400 など 4xx、GraphQL のバリデーション/パース失敗、有効な GraphQL でない 2xx/3xx
サーバエラー HTTP 5xx、resolver 内部エラー、JSON として解析できない応答

代表的なメッセージ例:

状況 メッセージ
認証失敗 認証に失敗しました(HTTP {ステータス})。環境の認証設定を確認してください。
クエリの問題 リクエストまたはクエリの内容に問題があります(HTTP {ステータス})。
サーバ側 サーバ側でエラーが発生しました(HTTP {ステータス})。
GraphQL 応答でない 2xx/3xx 有効な GraphQL 応答ではありません。エンドポイント URL・パスを確認してください。
タイムアウト 応答がタイムアウトしました(接続10秒/全体60秒以内に応答なし)。

タイムアウト値は接続 10 秒 / 全体 60 秒(固定)です。低速なサーバでは応答まで数十秒かかることがあります。

部分エラー(dataerrors の併存) では、ツリーに data 側を残したまま、Response 上部に黄色で 「部分的なエラーが含まれています:」と表示され、各エラーメッセージが並びます(extensions.code があれば メッセージ (CODE) の形式)。

送信できないとき(ガード)

▶ 送信 が無効(薄い表示)のときは、ボタンの外側にカーソルを乗せると理由がツールチップで表示されます (複数該当時は最も優先度の高い 1 件)。

優先 ツールチップの文言 対処
1 送信中です 直前の送信の完了を待つ
2 環境が選択されていません 環境を追加・選択する(環境の登録・切替
3 エンドポイント URL が未解決です。環境のリクエスト URL を確認してください 環境のリクエスト URL と参照先変数を直す
4 クエリが空です。右のスキーマから add Query でフィールドを追加してください + query でフィールドを追加する

送信例

架空スキーマ type Query { hello: String } を例にします。

  1. 環境セレクタで送信先の環境を選ぶ(トップバーに解決後 URL が表示される)。
  2. 認証が必要なら環境の「認証」節で方式とトークンを設定する。Auth タブは「環境の既定を継承」でよい。
  3. 右ペインのスキーマドキュメントで hello+ query をクリックし、Generated Query が query MyQuery { hello } になることを確認する。
  4. メソッド POST のまま ▶ 送信 をクリックする。
  5. HTTP 200 · 42 ms のような表示になり、「レスポンス」タブに data → hello → "world" のツリー、 「raw」タブに {"data":{"hello":"world"}} がそのまま表示される。

ポイント

  • 「送信される最終ヘッダー」プレビューと実際に送信されるヘッダーは、常に同じ解決結果です。
  • リクエスト履歴は左レールの履歴アイコンから確認できます(環境ごと直近 50 件)。行をクリックすると 新しいタブで、クエリ・ビルダー状態・リクエスト固有ヘッダー・HTTP メソッド・認証方式(秘密は除く)を 復元できます。レスポンス本文は履歴に保存されません。
  • 送信中に環境を切り替えても、進行中の応答が新しい状態を上書きすることはありません。切り替えた先で 改めて送信し直してください。

現時点での制限事項

  • GraphQL 変数の送信は入力モードに従います。 インラインではクエリ本文のみ(POST 系は { "query": "..." }、 GET は ?query=...)、変数モードでは variables も送ります(POST 系はボディ { "query": "...", "variables": {…} }、 GET は &variables=<URL エンコードした JSON>)。入力モードの切替は クエリビルダー を参照。
  • 必須引数のあるフィールドは、クエリビルダー の引数入力で値を設定してから 送信してください。未設定のまま送るとサーバ側でクライアント(クエリ)エラーになり得ます。
  • UPDATE は標準の HTTP メソッドではありません。 受け付けないサーバでは失敗します。
  • 認証は なし(none)/ Bearer / Basic のみです(API Key・OAuth2 は未対応)。
  • 接続タイムアウト 10 秒 / 全体タイムアウト 60 秒は固定で、ユーザー設定にはできません。

うまくいかないときは

症状 想定される原因 対処
▶ 送信 が押せない 上記「送信できないとき」のガード条件 ツールチップの文言を確認し、環境・URL・クエリを整える
[ネットワークエラー] 応答がタイムアウトしました… サーバが遅い、または到達不能 エンドポイントの稼働とネットワークを確認する(低速サーバでは全体 60 秒近く待つことがある)
[認証エラー] 認証に失敗しました(HTTP 401)。… HTTP 401 / 403 環境の「認証」節と Auth タブの方式を確認する。最終ヘッダーに Authorization(由来 Au)が載っているかも見る
[クライアント(クエリ)エラー] …(HTTP 400)。 クエリ不正・必須引数不足・パス誤りなど Generated Query と引数入力を確認する。URL のパスも確認する
[クライアント(クエリ)エラー] 有効な GraphQL 応答ではありません。… 2xx/3xx だが GraphQL 応答でない エンドポイント URL・パス(/graphql の付け忘れ等)を確認する
[サーバエラー] … HTTP 5xx・resolver 内部エラー・非 JSON 応答 サーバ側のログを確認する。raw タブで原文を見る
部分的なエラーが含まれています: が出る dataerrors が併存 ツリーのデータと各エラーメッセージを併せて確認する
ツリーに何も出ず raw への誘導だけ ボディが JSON でない raw タブで原文を確認する。エンドポイントや Content-Type を疑う
UPDATE で失敗する サーバが非標準メソッド UPDATE を受け付けない POST に切り替える

関連ドキュメント