クエリの送信とレスポンス
組み立てたクエリを HTTP で送信し、レスポンスとエラーの分類を確認する操作を説明します。
概要
送信は「組み立てたクエリ × 選択中の環境」で行います。HTTP 通信は端末側(GalleonQL 本体)から発行される ため、ブラウザの CORS 制限を受けません。フロントから直接アクセスできない社内 API でも、GalleonQL の デスクトッププロセスから到達できれば送信できます。応答は 4 つのタブで確認でき、エラーは起因ごとに 分類して表示されます。用語は 主要な用語 を参照してください。
前提
- 送信先の環境が選択され、解決後 URL が確定していること(未解決の
{{...}}が残っていると送信できません。 環境の登録・切替)。 - クエリビルダー でルートフィールドを 1 件以上追加していること (0 件の間は送信できません)。
- スキーマの取込は送信の必須条件ではありません(送信バーとレスポンス領域は未取込でも表示されます)。 ただしクエリの組み立てには取込が必要です(スキーマの取り込み)。
画面上の位置
画面は横 3 ペイン(左=リクエスト / 中央=レスポンス / 右=スキーマ)です。左ペインのタブは
Query | Auth | Headers | Hooks。送信バーは左ペインの Query タブにあり、上から
クエリビルダー → Generated Query パネル → 送信バー(HTTP メソッドセレクタ + ▶ 送信 + ステータス行)
の順です。レスポンスは中央ペインに表示されます。Auth / Headers / Hooks タブには送信ボタンはありません。
Hooks は送信後にレスポンスから環境変数へ値を取り出す/検証するルールです
(リクエストフック(値の抽出と検証)。Pro)。
操作手順
1. 環境とクエリを用意する
- トップバーの環境セレクタで送信先の環境を選び、解決後 URL が表示されていることを確認します
(空や未解決の
{{...}}のままだと送信できません)。 - 認証が必要なら、環境エディタの「認証」節で既定方式と秘密を設定します (環境の登録・切替)。
- 必要なら Auth / Headers タブを確認します(下記)。
- 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 タイムアウト(このクエリ)」節では、このクエリだけの接続タイムアウト(1〜60 秒)・
全体タイムアウト(1〜600 秒)を設定できます。空欄のままなら環境 → プロジェクト → アプリ既定(接続 10 秒/
全体 60 秒)の順で継承し、空欄の入力欄には現在有効な秒数・由来・許容範囲が表示されます
(例:「継承中 60 秒(環境) / 1〜600 秒」)。全角数字は半角へ正規化して保存され、数字以外の文字
(小数点・記号等)は入力からその場で取り除かれ「数字以外は入力できません」と通知されます。
取り除いた後に残った数字がそのまま秒数として保存されるため、1.5 と入力すると . が消えて
15 秒として保存されます。UI から到達しうる唯一のエラーは範囲外の整数を入力した場合です
(0 や無制限は指定できません)。環境・プロジェクト単位で設定する方法は
環境の登録・切替 の「HTTP タイムアウトを設定する」「HTTP タイムアウトのカスケード」
を参照してください。
リクエスト固有ヘッダー・認証方式・組み立て中の内容・HTTP メソッド・このクエリの HTTP タイムアウト設定は 自動保存され、起動時やプロジェクト切替時に復元されます(環境切替では載せ替えません)。レスポンス本文は 保存されず、タブを切り替えると Response ペインはリセットされます。このクエリの HTTP タイムアウト設定は リクエスト履歴からは復元されません(長期的に保持したい場合はコレクションへ保存してください)。
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 です。未送信時は 未送信。
2-2. subscription を購読する
クエリの種別が subscription のときは、環境ごとに選んだトランスポート——WebSocket (専用の接続にアップグレードする方式)または SSE(通常の HTTP リクエストの応答をイベント ストリームとして受け取る方式)——で接続します(環境 の「Subscription の トランスポートと接続先を設定する」)。HTTP メソッドの選択は使われません。接続先は環境の Subscription URL で、空欄ならリクエスト URL から自動で決まります。
subscription の購読は Pro プラン限定です。 無料プランで ▶ 送信 を押すと「Pro プラン限定の機能です」
というお知らせが表示され、購読は始まりません(WebSocket・SSE のどちらを選んでいても同じです)。
お知らせの **「Pro にアップグレード」**からプランを確認できます。組み立てたクエリや保存済みのクエリは
そのまま残るので、Pro にすればそのまま購読できます。購読中に無料プランへ戻った(ライセンスを解除した・
サブスクが失効した)ときは、その時点で購読が終了します(受信済みのイベントは残ります)。
▶ 送信を押すと購読が始まり、ボタンが■ 停止に変わります。- サーバからイベントが届くたびに、レスポンスペインのイベント一覧へ積まれていきます。
■ 停止を押すか、サーバ側が購読を終えると終了します。
認証は、送信時と同じカスケードで解決したヘッダーを使います。WebSocket は接続を開くときに まとめて渡します(ハンドシェイクの仕組み上、リクエストごとにヘッダーを付けられないため)。 SSE はその 1 回の HTTP リクエストに通常のヘッダーとして載せて送ります(購読中に繰り返し 送り直すわけではありません)。いずれも Auth タブ・Headers タブの設定はそのまま効きます。
同時に購読できるのは 1 本だけです。 新しい購読を始めると、それまでの購読は自動的に停止します (WebSocket・SSE を問わず共通の制限です)。
SSE を選んでいる場合の注意: SSE に対応していないエンドポイントへ接続すると、「エンドポイントが SSE に対応していない可能性があります」という理由でエラーになります。環境の「Subscription トランスポート」が接続先と合っているか確認してください。また、サーバの実装によっては、正常に 終了した購読でも「切断」の赤帯が出ることがあります(サーバが購読の終了を知らせる合図の送り方に 依存する既知の制限)。受信済みのイベントには影響しません。
2-3. 受信したイベントを読む
購読中はレスポンスペインの左側にイベント一覧が出て、右側の Tree / Render / Raw が 選択中のイベントを映します。
| 場所 | 表示 |
|---|---|
| 左のイベント一覧 | #連番 / ラベル / 経過時刻 の 1 行。エラーを含むイベントは赤く ERR が付きます |
| 一覧の上 | 「最新に追従」トグル(既定オン) |
| 一覧の下 | 保持件数(例 12 / 1000 件) |
| 見出し右 | ● 受信中 · N 件 · 経過。● は接続中だけ点滅し、終了後は灰色になります |
| タブの末尾 | Connection タブ(接続状態・接続先・トランスポート・受信合計・終了理由などをまとめて確認できます。SSE では加えて HTTP ステータスと Content-Type も表示されます) |
- 最新に追従がオンの間は、新しいイベントが届くたびに選択が最新へ移ります。一覧で過去のイベントを 選ぶと自動的にオフになり、読んでいる途中で飛ばされません。トグルを押せば追従へ戻れます。
- 保持できるのは最新 1000 件までです。超えると古いものから捨てられ、
(古い N 件を破棄)と 表示されます。 - エラーを含むイベントがあっても購読は続きます。 GraphQL ではイベントごとに部分的なエラーが 返ることがあるためで、そのイベントを選んだときだけ帯が出ます。
- 接続が切れたときは赤い帯で理由が表示され、受信済みのイベントは消えません。 何件目で切れたかを 確認できるようにするためです。サーバ側が正常に購読を終えた場合は赤帯は出ません。
- 切断されても自動では再接続しません。 切れている間のイベントは取得できないため、自動で繋ぎ直すと
「全部見えている」と誤解する恐れがあるからです。もう一度
▶ 送信を押して購読し直してください。
購読が終わると、リクエスト履歴に 1 件残ります(受信件数と経過時間つき)。履歴の行から結果を 開き直せます。アプリを終了して終端を迎えなかった購読は履歴に残りません。
3. レスポンスを確認する
中央ペイン(Response)の見出し右に、送信バーと同じ形式のメタ情報が表示されます。このリクエストに フックが適用されている場合、実行結果は Response の Hooks タブで確認できます (詳細は リクエストフック)。パネル内のタブで見方を切り替えます。
| タブ | 内容 |
|---|---|
| レスポンス | ボディを JSON として解析した折りたたみ可能なツリー(既定は全展開) |
| レンダー | Pretty 整形。右上の raw チェックでサーバ原文に切替。コピーは表示中の形式 |
| Req.Header | 送信時に実際に使ったヘッダーを由来バッジ付きで表示 |
| Res.Header | レスポンスヘッダーを全件表示(同名の重複・受信順序もそのまま) |
| Hooks | リクエストフックの実行結果(発火・抽出・検証) |
- 「レスポンス」タブは行の
▼(折りたたむ)/▶(展開)で切り替えます。新しい応答が来ると全展開へ リセットされます。JSON として解析できないボディはツリー表示できない旨が案内されます(原文は レンダータブの raw チェックで確認)。 - Req.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・パスを確認してください。 |
| タイムアウト | 応答がタイムアウトしました(接続{N}秒/全体{M}秒以内に応答なし)。(既定は接続10秒/全体60秒。設定を変更している場合はその秒数が表示される) |
タイムアウト値はユーザーが設定できます(接続は既定10秒・1〜60秒、全体は既定60秒・1〜600秒。 スキーマ取込と共通)。アプリ既定・プロジェクト・環境・このクエリの4段でカスケード設定でき、詳細は前述 「Headers タブ」、環境の登録・切替 の「HTTP タイムアウトのカスケード」を 参照してください。
部分エラー(data と errors の併存) では、ツリーに data 側を残したまま、Response 上部に黄色で
「部分的なエラーが含まれています:」と表示され、各エラーメッセージが並びます(extensions.code があれば
メッセージ (CODE) の形式)。
送信できないとき(ガード)
▶ 送信 が無効(薄い表示)のときは、ボタンの外側にカーソルを乗せると理由がツールチップで表示されます
(複数該当時は最も優先度の高い 1 件)。
| 優先 | ツールチップの文言 | 対処 |
|---|---|---|
| 1 | 送信中です |
直前の送信の完了を待つ |
| 2 | 環境が選択されていません |
環境を追加・選択する(環境の登録・切替) |
| 3 | エンドポイント URL が未解決です。環境のリクエスト URL を確認してください |
環境のリクエスト URL と参照先変数を直す |
| 4 | クエリが空です。右のスキーマから add Query でフィールドを追加してください |
+ query でフィールドを追加する |
送信例
架空スキーマ type Query { hello: String } を例にします。
- 環境セレクタで送信先の環境を選ぶ(トップバーに解決後 URL が表示される)。
- 認証が必要なら環境の「認証」節で方式とトークンを設定する。Auth タブは「環境の既定を継承」でよい。
- 右ペインのスキーマドキュメントで
helloの+ queryをクリックし、Generated Query がquery MyQuery { hello }になることを確認する。 - メソッド
POSTのまま▶ 送信をクリックする。 HTTP 200 · 42 msのような表示になり、「レスポンス」タブにdata → hello → "world"のツリー、 「レンダー」タブで pretty 表示され、raw チェックで原文を表示できる。
ポイント
- 「送信される最終ヘッダー」プレビューと実際に送信されるヘッダーは、常に同じ解決結果です。
- リクエスト履歴は左レールの履歴アイコンから確認できます(環境ごと直近 50 件)。行をクリックすると 新しいタブで、クエリ・ビルダー状態・リクエスト固有ヘッダー・HTTP メソッド・認証方式(秘密は除く)を 復元できます。レスポンス本文は履歴に保存されません。このクエリの HTTP タイムアウト設定も履歴には 保存されず、復元後は環境・プロジェクトの設定を継承します。
- 送信中に環境を切り替えても、進行中の応答が新しい状態を上書きすることはありません。切り替えた先で 改めて送信し直してください。
現時点での制限事項
- GraphQL 変数の送信は入力モードに従います。 インラインではクエリ本文のみ(POST 系は
{ "query": "..." }、 GET は?query=...)、変数モードでは variables も送ります(POST 系はボディ{ "query": "...", "variables": {…} }、 GET は&variables=<URL エンコードした JSON>)。入力モードの切替は クエリビルダー を参照。 - 必須引数のあるフィールドは、クエリビルダー の引数入力で値を設定してから 送信してください。未設定のまま送るとサーバ側でクライアント(クエリ)エラーになり得ます。
- UPDATE は標準の HTTP メソッドではありません。 受け付けないサーバでは失敗します。
- 認証は なし(none)/ Bearer / Basic / OAuth2 Client Credentials です(API Key・OAuth2 Authorization Code は未対応)。
- subscription は同時に 1 本までで、切断されても自動では再接続しません。保持できるイベントは 最新 1000 件までです。
うまくいかないときは
| 症状 | 想定される原因 | 対処 |
|---|---|---|
▶ 送信 が押せない |
上記「送信できないとき」のガード条件 | ツールチップの文言を確認し、環境・URL・クエリを整える |
[ネットワークエラー] 応答がタイムアウトしました… |
サーバが遅い、または到達不能 | エンドポイントの稼働とネットワークを確認する。低速サーバでは、プロジェクト・環境・このクエリの「HTTP タイムアウト」節で全体タイムアウトを延ばす(上限 600 秒) |
[認証エラー] 認証に失敗しました(HTTP 401)。… |
HTTP 401 / 403 | 環境の「認証」節と Auth タブの方式を確認する。最終ヘッダーに Authorization(由来 Au)が載っているかも見る |
[クライアント(クエリ)エラー] …(HTTP 400)。 |
クエリ不正・必須引数不足・パス誤りなど | Generated Query と引数入力を確認する。URL のパスも確認する |
[クライアント(クエリ)エラー] 有効な GraphQL 応答ではありません。… |
2xx/3xx だが GraphQL 応答でない | エンドポイント URL・パス(/graphql の付け忘れ等)を確認する |
[サーバエラー] … |
HTTP 5xx・resolver 内部エラー・非 JSON 応答 | サーバ側のログを確認する。raw タブで原文を見る |
部分的なエラーが含まれています: が出る |
data と errors が併存 |
ツリーのデータと各エラーメッセージを併せて確認する |
| ツリーに何も出ず raw への誘導だけ | ボディが JSON でない | raw タブで原文を確認する。エンドポイントや Content-Type を疑う |
| UPDATE で失敗する | サーバが非標準メソッド UPDATE を受け付けない | POST に切り替える |
| subscription を送信したら「エンドポイントが SSE に対応していない可能性があります」と出る | 環境のトランスポートが SSE だが、接続先が SSE(graphql-sse)に対応していない、または URL・パスが誤っている |
接続先の URL とパスを確認する。エンドポイントが WebSocket にのみ対応している場合は、環境の「Subscription トランスポート」を WebSocket に切り替える |
関連ドキュメント
- クエリの組み立て: クエリビルダー
- 環境・URL・認証・ヘッダーのカスケード: 環境の登録・切替
- 送信後の値抽出・検証: リクエストフック(値の抽出と検証)
- HTTP タイムアウトのカスケード: 環境の登録・切替 の「HTTP タイムアウトのカスケード」
- スキーマの取り込み(同じエラー分類・タイムアウト): スキーマの取り込み
- 用語: 主要な用語
- 索引に戻る: ユーザーマニュアル目次