PostmanでAPIをテストする場合は、現在時刻のタイムスタンプを渡すのが非常に一般的なタスクです。それでは、Postmanで現在時刻のタイムスタンプを渡すには、どうしたらいいですか?本文では、Postmanで現在時刻のタイムスタンプを渡す方法を皆さんに紹介します。
パラメータ値で直接データジェネレータからタイムスタンプを選択したり、
{{$timestamp}}
を入力したりして、より簡単にタイムスタンプを渡せます。また、PostmanのScriptにも完全に対応しています。タイムスタンプを渡す必要があるのはなぜ?
PostmanなどのAPIテスト用ツールを使って、APIをテストする場合は、タイムスタンプを渡す必要がある場合がよく見られますね。それはなぜでしょうか?APIテスト時にタイムスタンプを渡す理由は主に以下の3つが考えられます。
- リクエストの一意性を担保する
APIにタイムスタンプを付与することで、完全に同一のリクエストが重複して送信されるのを防ぐことができます。サーバー側で適切にリクエストを識別し、正しく処理できるようになります。 - タイムスタンプを利用したデータ検証
一部のAPIではタイムスタンプに基づいた検証が行われる場合があります。例えば、タイムスタンプが一定時間以内であること、タイムスタンプの順序が正しいことなどをチェックし、不正なリクエストを排除できます。 - 監査ログにタイムスタンプを記録
APIへのアクセスを監視したり、セキュリティ上の理由からリクエストのタイムスタンプを記録する必要がある場合があります。後々トレースバックが可能となり、課題の特定や分析に役立ちます。
一般的にタイムスタンプは、リクエストに関する情報をサーバー側で管理したり、データの整合性や信頼性を確保したりするために利用されています。PostmanでタイムスタンプをAPIに渡すことで、本番と同等の環境でテストを行えるようになります。
Postmanとは
Postmanは、API(Application Programming Interface)開発とテストのための人気のあるツールです。Postmanを使用すると、開発者はHTTPリクエストを作成し、APIエンドポイントに送信することができるので、APIの動作をテストしたり、リクエストとレスポンスのデータを確認したりできます。

また、Postmanは、機能豊富なインターフェースを提供し、リクエストの作成や編集、ヘッダーの管理、パラメータの設定、レスポンスの確認などを行うことができます。

Postmanで現在時刻のタイムスタンプを渡す
それでは、PostmanでAPIをテストする際、どのように現在時刻のタイムスタンプを渡せば良いのでしょうか?次は、詳細なガイドを皆さんに紹介します。
内蔵変数で現在時刻のタイムスタンプを取得して渡す
Postmanであるコレクションを開き、リクエストを選択します。このリクエストには timestamp
というパラメータがある場合、Postmanが提供してくれる内蔵変数提 {{$timestamp}}
を使って、現在時刻のタイムスタンプを取得します。
具体的には、エンドポイントのURLの後に、次のようにパラメータを定義することができます:
timestamp={{$timestamp}}

そして、リクエストを送信して、コンソールで実際のリクエスト情報をプリントすると、現在時刻のタイムスタンプが渡されることがわかりました。
Pre-request Scriptで現在時刻のタイムスタンプを取得して渡す
Postmanで内蔵変数以外、Scriptを使って現在時刻のタイムスタンプを取得することも可能です。Scriptでタイムスタンプを取得すると、それを環境変数かグローバル変数に保存することができます。そして、リクエストのパラメータでこの変数を利用すれば良いのです。
Scriptで次にように、Date
オブジェクトを利用して、タイムスタンプを取得できます:
// ミリ秒単位のタイムスタンプを取得
let timestamp = new Date().getTime();
console.log(timestamp);

上記のコードは、Date
オブジェクトを作成して、getTime()
メソッドを利用して当該オブジェクトのタイムスタンプを取得します。返されたタイムスタンプは、1970 年1月1日0時(UTC)から現時刻までのミリ秒数になります。秒単位のタイムスタンプを取得するには、Math.floor
かMath.round
メソッドを利用することができます。
// 秒単位のタイムスタンプを取得
var timestampInSeconds = Math.floor(new Date().getTime() / 1000);
console.log(timestampInSeconds);

タイムスタンプを取得すると、次のScriptを利用してそれを環境変数に保存することができます:
let timestamp = new Date().getTime();
pm.environment.set('current_timestamp', timestamp);
環境では、current_timestamp
というフィールドがない場合は、Postmanはこの変数を自動的に作成して、値を記入します。

Apidogでより便利にタイムスタンプを渡す
APIテストする際、タイムスタンプを渡す必要がある場合、Apidogという便利なツールを使ったら、より簡単に渡すことができます。
下図のように、パラメータ値で「魔法の杖」アイコンをクリックして、データジュネレータをクリックして、timestampを選択することもできますし、

パラメータ値に{{$timestamp}}
を入れて内蔵変数を入力することで、簡単に渡すこともできます。

また、Apidogは、PostmanのScriptにも完璧の互換できますので、「前処理」のカスタムScriptを利用して、Postmanと同じなScriptを利用して、タイムスタンプを取得したり、渡したりすることも可能です。

まとめ
この記事では、PostmanでAPIテスト時に現在時刻のタイムスタンプを渡す方法について詳しく解説しました。APIテスト時に様々な原因でタイムスタンプを渡すことが必要となります。Postmanでは、内蔵変数かPre-request Scriptを使って、現在時刻のタイムスタンプを取得し、リクエストに渡すことができます。
より簡単な方法といえば、Apidogという便利なAPI管理ツールを使うのがおすすめです。Apidogを使うことで、パラメータ値で直接データジェネレータからタイムスタンプを選択したり、{{$timestamp}}
を入力したりして、より簡単にタイムスタンプを渡せます。また、PostmanのScriptにも完全に対応しています。
タイムスタンプを適切に扱うことは、APIテストの質を高め、本番環境に近い状態でテストを行うために重要です。PostmanやApidogなどのツールを上手く活用し、効率的でより現実的なAPIテストを実施しましょう。