こんにちは!API開発やテスト、日々のメンテナンス、本当にお疲れ様です。
複数のAPIを連携させて開発しているとき、こんな面倒くささに直面したことはありませんか?
「まずログインAPIを叩いてアクセストークンを取得し、その長い文字列を手動でコピーして、次のユーザー情報取得APIのヘッダーに貼り付けて……あ、トークンが有効期限切れになったからやり直しだ!」
……正直、手が何本あっても足りないし、何よりエンジニアの貴重な脳のメモリを無駄に消費してしまいますよね。
今回は、APIクライアント「Insomnia」の秘技「Request Chaining(リクエスト・チェーニング)」を徹底解説します。これをマスターすれば、ログインからデータ取得、更新までの複雑なワークフローを完全に自動化し、あなたのAPIテストライフを劇的に楽にすることができますよ。
一緒に、現場で即戦力となるテクニックを学んでいきましょう!
—
1. Insomniaとは? なぜ今、Request Chainingなのか
APIのテストや開発といえば「Postman」が有名ですが、軽量で美しく、開発者に寄り添った直感的なUIで人気を博しているのが「Insomnia」です。
Insomniaの最大の見所の一つが、このRequest Chaining(リクエストの連鎖)機能です。
これは文字通り、「あるAPIのレスポンスに含まれるデータ(IDやトークンなど)を自動的にキャプチャし、別のAPIのリクエスト(URL、クエリパラメータ、ヘッダー、ボディなど)に動的に流し込む」仕組みです。
手動でのコピー&ペースト作業を根絶し、「APIの実行順序を含めたシナリオテスト」をInsomnia上で完結させることができます。
—
2. 導入と基礎セットアップ(環境変数の理解)
Request Chainingを使いこなすための前提として、Insomniaの「Environment(環境変数)」の概念を押さえておく必要があります。
Insomniaでは、変数をスコープ(WorkspaceやEnvironment)ごとに管理できます。チェーニングの肝は、「あるリクエストのレスポンスを、環境変数に自動的に書き込み、別のリクエストでその環境変数を参照する」というアプローチです。
ざっくりとした流れ
1. ログインAPIを叩く。
2. ログイン成功時のJSONレスポンス(例: `{“token”: “xyz123…”}`)から、`token`の値を抽出する。
3. 抽出した値を、Insomniaの環境変数(例: `bearer_token`)に自動保存する。
4. 別のAPIのヘッダーに `Authorization: Bearer {% response ‘body’, ‘n/a’, ‘b64…’, ‘$.token’, ‘n/a’ %}` のようなタグを埋め込み、自動で変数を受け取る。
言葉だけだと難しそうに聞こえますが、InsomniaのUIを使えばマウス操作と簡単な設定だけで実現できます。早速、具体的な手順を見ていきましょう!
—
3. 実践!Request Chainingでワークフローを自動化する
今回は、以下のシンプルな2ステップのワークフローを自動化してみます。
1. `POST /api/login` (メールアドレスとパスワードを送り、JWTアクセストークンを得る)
2. `GET /api/user/profile` (取得したトークンを `Authorization` ヘッダーに設定して、ユーザー情報を取得する)
ステップ1:ログインリクエストの準備
まずは通常通り、ログイン用のリクエストを作成します。
- Method: `POST`
- URL: `https://api.example.com/api/login`
- Body: `JSON`
{
“email”: “test@example.com”,
“password”: “super-secret-password”
}
このリクエストを送信(Send)すると、以下のようなレスポンスが返ってくると仮定します。
{
“status”: “success”,
“token”: “eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSm9lZSJ9…”
}
ステップ2:2つ目のリクエスト(プロフィール取得)の準備
次に、トークンを必要とするAPIリクエストを作成します。
- Method: `GET`
- URL: `https://api.example.com/api/user/profile`
- Headers:
- `Authorization` : `Bearer <ここにトークンを自動で差し込みたい!>`
ステップ3:魔法のタグ(Request Chaining)を埋め込む
ここからが本番です。ヘッダーの値を自動化するために、Insomniaの「タグ機能」を呼び出します。
1. `Authorization` ヘッダーの値入力欄にカーソルを合わせます。
2. キーボードで `Ctrl + Space` (Macの場合は `Cmd + Space` またはそのまま入力欄をクリックしてポップアップを出す)を押すと、変数やタグの選択メニュー(Template Tag)が立ち上がります。
3. メニューの中から `Response` タグを選択します。
すると、次のような詳細設定モーダル(Edit Tag)が開きます。ここが最重要ポイントです!
- Request: どのリクエストのレスポンスを参照するか? -> ステップ1で作った `POST /api/login` を選択します。
- Filter (JSONPath): どのデータを抜き出すか? -> レスポンスJSONからトークンを指定するため、JSONPathで `$.token` と入力します。
- Value when un-generated: レスポンスがまだ無い場合のフォールバック(そのままでOK)
設定を保存すると、ヘッダーの値に見慣れないタグ(例:`{% response ‘body’, ‘req_12345…’, ‘b64…’, ‘$.token’, ’60’ %}`)が挿入されます。これが「チェーニング(鎖)」の正体です。
—
4. 動作確認:いざ、魔法の連鎖を体験しよう!
設定が完了したら、動作確認をしてみましょう。
1. まずは何も考えず、2つ目のリクエスト(`GET /api/user/profile`)の「Send」ボタンを押してみてください。
2. すると、Insomniaが裏側で自動的に次のような挙動を起こします。
- 「おっと、このリクエストのヘッダーにあるトークンを取得するには、まず `POST /api/login` を先に実行して最新のレスポンスを取ってくる必要があるな」
- 裏側で自動的に `POST /api/login` が実行される。
- 返ってきたレスポンスから `$.token` を抽出し、今回のリクエストの `Authorization` ヘッダーにリアルタイムで埋め込む。
- そのままAPIサーバーへリクエストが飛ぶ。
結果として、手動でログインし直す手間が一切なくなり、2つ目のリクエストを叩くだけで常に最新のセッション情報でAPIテストができるようになります。
—
5. 現場で役立つプロの知見・アンチパターン
最後に、このRequest Chainingを現場のプロジェクトで本格運用する際に、知っておくべき「プロの知見」をいくつか授けておきます。
💡 知見1:リクエストの依存関係を複雑にしすぎない
Request Chainingは非常に強力ですが、「Aを呼んでBを呼び、その結果でCを更新し、さらにDを……」と依存関係をチェインメイル(鎖帷子)のように複雑にしすぎると、「どのリクエストを単体でテストしたいのか」が分かりにくくなり、デバッグ地獄に陥ります。
基本は「認証トークンの取得」や「直前のリクエストで生成されたリソースID(UUIDなど)の引き継ぎ」といった、シンプルな依存関係に絞るのが美しく保守しやすい設計のコツです。
💡 知見2:環境変数(Environment)との使い分けを意識する
環境変数は「ステージごとの切り替え(Staging / Production)」や「共通のベースURL」に向いています。
一方、Request Chainingは「実行フローの中で動的に生成される一時的なデータ(アクセストークンや採番されたID)」に向いています。この2つを適切に組み合わせることで、Insomniaのポテンシャルを100%引き出すことができます。
—
まとめ
いかがだったでしょうか?
Insomniaの「Request Chaining」をマスターすれば、毎日の退屈なコピペ作業から解放され、APIテストのスピードと精度が何倍にも跳ね上がります。
「これをマスターすれば、毎日の作業が劇的に楽になりますよ」。
ぜひ今日の業務から、あなたのワークフローにこの「連鎖の魔法」を取り入れてみてください。
あなたのAPI開発ライフが、よりスマートで創造的なものになることを応援しています!