【入門編】PostmanのPre-request Script活用術!リクエスト送信前に動的に署名やタイムスタンプを生成する – データベース・API管理活用バイブル

こんにちは。API開発の現場で、毎日何十回と「手動でタイムスタンプを書き換え」「署名を計算して貼り付け」なんて作業をしていませんか?

もしそうなら、今日でその苦行は卒業です。Postmanの「Pre-request Script」を使いこなせば、APIが要求する面倒なセキュリティ要件や動的なパラメータ生成を、すべて自動化できます。

今回は、API開発者なら避けては通れない「リクエスト直前の動的処理」の極意を伝授します。

—

1. Pre-request Scriptとは何か?

一言で言えば、「リクエストが送信される直前に実行されるJavaScriptのサンドボックス」です。

通常、APIを叩くときは固定値のパラメータを送りますよね。しかし、本番に近いAPIでは「現在時刻のタイムスタンプが必要」「APIキーを使ってリクエストボディ全体をHMAC署名する必要がある」といった動的な制約が課せられます。これを手動でやるとミスが起き、開発効率は地に落ちます。

Pre-request Scriptを使えば、Postmanの中で変数(Environment Variables)を計算・生成し、それをリクエストに流し込むことが可能です。

—

2. セットアップ:まずはここから

Postmanをインストールしたら、まずは「環境変数(Environment)」の設定を行ってください。

1. 右上の「Environments」アイコンをクリック。
2. 「Create Environment」で `MyDevelopment` と名付ける。
3. `timestamp` や `signature` などの変数を追加しておく(初期値は空でOK)。

これで、スクリプト内で `pm.environment.set(“key”, value)` を使って値を書き込む準備が整いました。

—

3. Hello World:動的タイムスタンプを自動付与する

まずは基本の「現在時刻」を動的に生成しましょう。

1. 任意のRequestタブを開く。
2. 上部のタブメニューから 「Pre-request Script」 を選択。
3. 以下のコードを記述します。

// 現在のUNIXタイムスタンプを取得して環境変数に保存
const now = Math.floor(Date.now() / 1000);
pm.environment.set(“current_ts”, now);

console.log(“生成されたタイムスタンプ:”, now);

4. リクエストボディやパラメータに `{{current_ts}}` と記述します。
5. 「Send」を押すと、送信直前に必ずこのスクリプトが走り、最新の時刻が代入されます。

—

4. 実践編:HMAC-SHA256署名の動的生成

現場で最も多いのが、APIキーを用いた署名認証です。例えば「リクエストボディ+タイムスタンプ」を秘密鍵でハッシュ化するケースですね。これを自動化すると、もう二度と「署名エラー」に悩まされることはありません。

Pre-request Scriptのコード:

// 秘密鍵と現在のタイムスタンプを取得
const secretKey = “my-secret-key-123”;
const timestamp = Math.floor(Date.now() / 1000);
const body = pm.request.body.raw; // リクエストボディを取得

// 署名対象の文字列を作成
const signatureBase = timestamp + body;

// HMAC-SHA256で署名を生成
// CryptoJSはPostmanに組み込まれているため、即座に使用可能
const signature = CryptoJS.HmacSHA256(signatureBase, secretKey).toString(CryptoJS.enc.Hex);

// 環境変数にセットしてリクエストで利用可能にする
pm.environment.set(“x-api-timestamp”, timestamp);
pm.environment.set(“x-api-signature”, signature);

あとは、Headersセクションで以下のように設定するだけです。

  • `X-Timestamp`: `{{x-api-timestamp}}`
  • `X-Signature`: `{{x-api-signature}}`

—

5. 伝説のエンジニアからのアドバイス

Pre-request Scriptを使う上で、覚えておくべき「現場の極意」を3つだけお伝えします。

1. CryptoJSを味方につける: Postmanは `CryptoJS` ライブラリを標準搭載しています。MD5, SHA1, SHA256, HMACなど、暗号化系の処理はすべてこれで完結します。わざわざ自分で実装してはいけません。
2. uuidを生成する: `uuid` を生成したい場合は `pm.info.requestName` などと組み合わせて `pm.environment.set(“uuid”, Math.random().toString(36)…)` と書くこともできますが、より正確には `crypto.randomUUID()` がPostmanで利用可能です(Node.js互換機能)。
3. Consoleを確認する: 期待通りに動かないときは、左下の「Console」ボタンを押してください。`console.log` の出力結果がすべてそこに表示されます。ここを見ずにデバッグするのは、目隠しで高速道路を走るようなものです。

—

まとめ:自動化で「本質」に集中しよう

API開発の面白さは、署名の計算やタイムスタンプの調整といった「事務作業」にはありません。本来は、APIの設計、データのモデリング、そしてユーザーにどんな価値を届けるかという「本質的な創造」にあるはずです。

Pre-request Scriptをマスターすれば、これらの退屈なルーチンワークは一瞬で消え去ります。ぜひ今日のタスクから導入して、その劇的な効率化を実感してください。

何か詰まったら、いつでもコンソールを覗いてください。Postmanはあなたの良き相棒として、常に正しい情報を教えてくれるはずですよ。

タイトルとURLをコピーしました