Postmanでは、HTTPリクエストを受け付けるモックサーバーを作ることができます。
ここでのゴールは、HTTP POSTを受け付けて { "Your payload is": "XXXX" }
を返す、いわゆるEchoサーバーを作ります。
※ほかにも同様の記事があるのですがPostmanのUIは日々進化しているため、2024年5月時点でのやり方の記録です
Mock server (モックサーバー) メニューを出現させる
モックサーバーを作りたいワークスペース※1を開き、ワークスペースサイドバーを設定※2をクリック、モックサーバー を有効化。すると、サイドバーにモックサーバーが表示されます。
コレクションを作成 > リクエストを追加 > サンプルを追加という手順でも同様に進められるのですが、モックサーバー側から進むことでURLのランダム生成をしてくれるため、モックサーバーの作成から始める方が手間が少なくて良さそうです
モックサーバーの作成手順
- サイドバーのモックサーバー > モックサーバーを作成 を開く
- コレクションを選択してモックを作成*では、リクエストメソッド一覧から
POST
を選択。この時POSTの行が自動的に増えます(GETの行は残りますが、実際はPOSTのみ作られます)。 - その他のパラメータ(リクエスト URL、レスポンスコード、レスポンスボディ)は、この時点では設定せずに次に進みます。
- コレクションを選択してモックを作成*では、リクエストメソッド一覧から
-
設定 では、モックサーバーの名前を指定(以後、
My1stMockServer
)して、モックサーバーを作成に進みます。
これで、ともかくHTTP POST を受け取るモックサーバーができました。
リクエストを確認する
サイドバーのモックサーバー > My1stMockServer を開き、コレクションドキュメントを見るを開くと、cURLを始めとしたツール/言語によるリクエストサンプルが提示されています。実行してみましょう。
curl --location --request POST 'https://***.mock.pstmn.io/' --data ''
リクエストを実行した後、改めてサイドバーのモックサーバー > My1stMockServer を見てみると、ログが1行できていることが確認できます。
レスポンスボディを追加する
サイドバーのコレクション > My1stMockServer > POST > デフォルト と開いていくと、レスポンスボディが設定できる画面にたどり着きます。
ボディ に以下のように指定します。
{ "your payload is": "{{$body 'payload'}}" }
その後、右上の保存をクリックします。設定はこの時点で反映されます。
{{$body}}
というのは、template helperです。詳しくはUsing template helperをご覧ください。
他にも {{$timestamp}}
などの動的データを返してくれる変数が存在します。詳しくはGenerating random data with dynamic variablesをご覧ください。
※未加工のPOST BODY全体を得る方法を見つけることができませんでした(2024年5月現在)
POSTボディ付きリクエストを確認する
以下のように送信すると payload
に設定したデータが返却されます。
curl --location --request POST 'https://***.mock.pstmn.io/' --data 'payload=Hello'
#=> { "Your payload is": "Hello" }
メソッドやパスの増やし方
Postmanのモックサーバーは、API ゲートウェイプロダクトのように、気軽にメソッドやパスの追加が可能です。
- サイドバーのコレクション > 2. My1stMockServer の三点メニュー(右側の "・・・" と表示されている部分) > リクエストの追加 で、新規リクエスト を追加できます
- この時点で 新規リクエスト の名前変更をしておきましょう。後々の混乱が減少します。以後
2ndReq
とします
- この時点で 新規リクエスト の名前変更をしておきましょう。後々の混乱が減少します。以後
-
2ndReq のメソッドを選択(例: GET)し、URL を入力するかテキストを貼り付け には
{{url}}/
と入力します-
{{url}}
はコレクションの変数です - ここで
{{url}}/foo
とすればGET https://***.mock.pstmn.io/foo
で受け付けられます
-
-
2ndReq* の三点メニュー > サンプルを追加 で、
2ndReq
が追加できます
ここまでの操作は、それぞれ実行した時点で即時反映されます。
以後は、先ほどの POST で指定した時と同様にレスポンスボディを指定できます。
削除
モックサーバーは コレクション と モックサーバー のそれぞれにいるので、それぞれ削除しましょう。これですっきり。
おわりに
シンプルなEchoサーバーであれば、簡単に作れます。複雑な条件分岐があるなら、ちゃんとAPIサーバーを立てたほうが良いでしょう。道具は適材適所ですね。
どんなことができるのかや、エンドポイント保護(x-api-key の利用など)は、公式ドキュメントをご覧ください。
EoT