APIの「429 Too Many Requests」を華麗にかわす。Postmanでスロットリングを極める技術
こんにちは。API開発の世界へようこそ。
あなたが今、一生懸命書いたコードで大量のデータを処理しようとした瞬間、サーバーから突きつけられる「429 Too Many Requests」という冷徹なエラー。これに遭遇したとき、多くの初心者が「自分のコードが壊れたのか?」と焦ります。
しかし、これは「壊れた」のではなく、「速すぎてサーバーが悲鳴を上げている」というサインです。
プロのエンジニアは、ここで力任せにリクエストを送り続けません。「スロットリング(流量制御)」という技術を使い、相手のペースに合わせた礼儀正しい通信を行います。今日は、Postmanを使ってこの「大人の通信術」をマスターし、APIリクエストを自在に操る極意をお伝えします。
—
1. Postmanとは:単なるAPIテストツールではない
Postmanは、単なる「HTTPリクエストを送るボタン」ではありません。APIの設計・テスト・ドキュメント化までを担う、「APIライフサイクルの司令塔」です。
まずはインストールがまだの方は[公式サイト](https://www.postman.com/downloads/)からサクッと済ませてしまいましょう。セットアップといっても、アカウントを作ってログインするだけ。これだけで、あなたのAPIリクエスト環境がクラウドに保存され、どこでも同じ設定で作業できるようになります。
—
2. HelloWorld:まずは「正しく届く」ことを確認する
まずは基本の「き」です。
1. New > HTTP Request を選択。
2. URLに `https://jsonplaceholder.typicode.com/posts/1` を入力。
3. Send をクリック。
4. 下のパネルに `200 OK` が返ってくれば成功です。
これが確認できたら、いよいよ本題の「レートリミット突破術」に入りましょう。
—
3. 基本のテクニック:Collection Runnerの「Delay」
大量のリクエストを一度に送るには、複数のリクエストを束ねた「Collection」を作り、Collection Runnerを使うのが定石です。
- 設定方法:
1. 左側の「Collections」から対象のフォルダを選択。
2. 「Run」ボタンをクリック。
3. 設定画面の「Delay」項目に注目してください。
ここが重要です。「Delay(ms)」に `500` や `1000` と入力してください。 これだけで、リクエストとリクエストの間に0.5秒〜1秒のインターバルが入ります。多くのAPIは、この「小さな間」を入れるだけで429エラーを回避できるようになります。
—
4. マニアックな裏技:Pre-request Scriptで制御する
Collection RunnerのDelayは便利ですが、「特定のリクエストだけ間隔を空けたい」といった細かい調整はできません。そんな時は、Pre-request Scriptという「リクエスト送信直前に動く魔法のコード」を使います。
実は、JavaScriptの `setTimeout` はPostman内ではそのまま使えません。そこで、擬似的に待機させるロジックを組み込みます。
// Pre-request Scriptに記述
const delay = 1000; // 1秒待機
const start = Date.now();
// 同期的にループを回して時間を消費させる(簡易的な待機処理)
while (Date.now() – start < delay) {
// 何もせず待機
}
console.log("1秒待機完了。サーバーへの負荷を抑えます。");
なぜこれが必要なのか?
サーバーによっては、1秒間に10回までと厳密なルールがある場合があります。このスクリプトを仕込めば、どんな環境でも確実なペース配分が可能です。
—
5. さらに高みへ:動的スロットリングの考え方
もしあなたが熟練のエンジニアを目指すなら、さらに一歩進んだ「動的スロットリング」を意識してください。
サーバーから返ってくるレスポンスヘッダーには、しばしば `X-RateLimit-Remaining` のような、「あと何回リクエストできるか」を示す値が含まれています。
これを `Tests` タブで取得し、残りが少なくなったら強制的にスクリプト側でウェイトをかける。これこそが、API開発の現場で求められる「事故を防ぐための防御的設計」です。
// Tests タブに記述
const remaining = pm.response.headers.get(“X-RateLimit-Remaining”);
if (remaining && parseInt(remaining) < 5) {
console.warn("残り回数が少ないため、次の実行を慎重に制御してください");
// ここでフラグを立てて、次のリクエストで遅延を大きくするロジックを組む
}
---
最後に:ツールを使いこなすということ
API開発において、429エラーは「失敗」ではありません。「通信の作法を学ぶためのきっかけ」です。
Postmanの機能をただボタンを押すためだけに使うのは、フェラーリで近所のコンビニに行くようなものです。今回紹介したCollection Runnerやスクリプト制御をマスターすれば、あなたの開発効率は劇的に向上し、サーバーエンジニアからも「お、コイツのAPIの叩き方はスマートだな」と一目置かれる存在になれるはずです。
まずは今日のスクリプトをコピー&ペーストして、自分の手で「制御する感覚」を掴んでみてください。それが、プロへの第一歩です。
応援していますよ。何かあれば、いつでも聞きに来てください。