リクエストフック(値の抽出と検証)
送信後のレスポンスに対して、宣言的なルールで値を環境変数へ取り出す、またはステータスやボディを検証する操作を説明します。
概要
リクエストフックは、クエリ送信のあとに自動で評価されるルールです。代表的な使い方は次の 2 つです。
- 値の抽出 — 例:
loginミューテーションのレスポンスからトークンを取り出し、環境変数tokenに保存する。以降のリクエストはヘッダーでBearer {{token}}を参照できる。 - 検証(アサーション) — 例: ステータスが
200であること、ボディの$.data.okがtrueであることを検査し、結果を Response の Hooks タブに表示する。
ルールは トリガー → 条件(AND)→ アクション の形です。JavaScript などのスクリプトは使えません(宣言的なフォーム編集のみ)。
Pro プラン限定です。 Free ではルールの閲覧・インポート結果の保持はできますが、新規作成・編集・有効切替・送信時の実行はできません。プランの詳細は プラン(Free / Pro)とライセンス を参照してください。
前提
- クエリの送信とレスポンス で送信ができること。
- 環境の登録・切替 で環境変数とヘッダーカスケードを理解していること。
- フックが書き込む先は 環境変数(
{{key}})です。GraphQL 変数($id等)とは別物です(主要な用語)。
画面上の位置
左ペインのリクエストタブ Query | Auth | Headers | Hooks の 4 枚目が Hooks です。Free のときはタブ見出しとパネルに [Pro] バッジが出ます(Pro 利用中は出しません)。
実行結果は、中央ペイン(Response)の Hooks タブにまとめて出ます(適用フックが 1 件以上あるときだけタブ自体が出ます)。
- タブ見出し: 未実行は
Hooks、送信後はHooks (発火数/定義数)(例:Hooks (1/1)) - タブ内サマリ:
フック n/mと、検証があるときは検証 (p/t) ✓|△|✗ - 一覧: 各フックの発火/不発火・抽出・検証(✓/✗)の内訳
- ルールの編集は左ペインの Hooks タブ(リクエスト編集側)のままです
スコープ(3 層カスケード)
| スコープ | 意味 | 由来バッジ |
|---|---|---|
| プロジェクト | プロジェクト全体 | P |
| 環境 | 指定した 1 つの環境 | E |
| このリクエスト | コレクションに保存済みのこのリクエストのみ | R |
- 実行順は プロジェクト → 環境 → このリクエスト です。
- 値の抽出で同じ環境変数名が複数ある場合は、後のスコープが勝ちます。
- 検証の結果はマージせず、フックごとにすべて記録されます。
- 「このリクエスト」は、リクエストをコレクションへ保存するまで選べません。
トリガー
| 表示 | 発火するとき |
|---|---|
| 成功時のみ | 成功(data あり・errors なし)のとき |
| 部分エラー含む | 成功、または部分エラー(data と errors が併存)のとき |
| 常に | ネットワーク到達前の失敗を含め常に |
「常に」でも、レスポンスボディが無いとき(トランスポートエラー)はボディ参照の条件・抽出・検証は成立しません。
条件(AND)
条件は 0 件以上。すべて満たしたときだけ発火します(0 件ならトリガー一致で発火)。
| 対象 | 説明 |
|---|---|
| ステータスコード | HTTP ステータスと比較 |
| ボディの値 | JSONPath 風パス(例 $.data.login.token)の値と比較 |
| 環境変数 | 送信時の解決済み環境変数と比較 |
演算子は = / ≠ / 含む / 存在する / 未設定(未設定は環境変数専用)です。
アクション
| 種類 | 内容 |
|---|---|
| 値を抽出 | ボディのパスから値を取り、指定した環境変数へ保存する |
| 検証 | 条件と同じ対象・演算子で検査し、成功/失敗を結果に記録する |
- 抽出できるのは 文字列・数値・真偽値 です。オブジェクト/配列/
nullはスキップされます。 - 検証が失敗しても、同じルールの抽出は独立して実行されます。
- 検証の失敗は送信結果そのもの(ステータス帯・partial errors 表示)を書き換えません。 Response の Hooks タブに現れます。
操作手順
値を抽出する(トークン保存の例)
- 対象のリクエストを開き、Hooks タブで「フックを追加」を押します。
- スコープ・トリガー(多くは「成功時のみ」)を選びます。
- 必要なら条件を追加します(例: ステータス =
200)。 - アクションを「値を抽出」にし、パス(例
$.data.login.token)と環境変数名(例token)を入れます。 - 「直前のレスポンスで試す」で dry-run し、問題なければ「完了」します。
- クエリを送信すると、条件を満たした場合に環境変数が更新されます。
検証を追加する
- アクションの種類を 「検証」 にします。
- 対象・演算子・値を条件と同じ UI で指定します(例: ステータス =
200、ボディ$.data.ok=true)。 - dry-run または本送信のあと、Response の Hooks タブでサマリと各検証の ✓/✗ を確認できます。
- 普段は Body だけ見て、疑わしいときや実装確認のときに Hooks タブを開けば足ります。
期待結果
- Hooks タブに適用中のフックが一覧表示される。
- dry-run は環境変数を書き換えず、本送信と同じ評価結果を返す。
- 本送信で抽出が成功すると、選択中環境の環境変数が確認なしで更新される。
- 検証の成否は Response の Hooks タブに現れ、送信結果の分類表示は従来どおり。
制限事項
- 送信前(pre-request)のフックや、
{{$timestamp}}のような組み込み動的変数は未対応です。 - スクリプトによるフックや JSON でのルール編集はありません。
- フックはプロジェクトの JSON エクスポート/インポートに含まれません。
- 未保存タブでは「このリクエスト」スコープを選べません。
- パスや変数名が空の条件・アクションは成立/抽出しません。
- 演算子 「含む」 で比較値を空のままにした場合も不成立です(条件・検証の両方。空文字を許すと常に真になるのを避けるため)。