投稿日

SORACOM Beam や SORACOM Flux の開発・デバッグに使える HTTP モックサーバーを素早く作る方法 

こんにちは、ソラコムのテクノロジー・エバンジェリストの 松下(ニックネーム: Max)です。

IoTデバイスを開発する際、データ送信先となるサーバーの準備が迅速に整うことで、開発プロセスが格段に楽になります。例えば、データ転送サービス「SORACOM Beam」での転送先や、ローコード IoT アプリケーションビルダー「SORACOM Flux」での Webhook アクションの送信先のサーバーが 該当します。

このブログでは API の設計・テスト・モニタリングを支援するプラットフォーム「Postman」の HTTP モックサーバー(実システムに近しい動作をする模倣サーバー)機能にて、HTTP POST を受け付けて { "Your payload is": "<入力データ>" } を返す、いわゆる “Echo サーバー” を作成する方法を紹介します。

Postman とは

Postmanは、API の設計からテスト、デバッグ、モニタリング、ドキュメント作成までを一貫して支援するプラットフォームです。開発者は API リクエストを簡単に送信・検証でき、エンドポイントの動作確認やパフォーマンスのテストが効率的に行えます。また、チームでのコラボレーション機能も充実しており、複雑なAPI開発プロセスを円滑に進めることが可能です。

Postman の料金体系はサブスクリプションです。無料(Free プラン)があり、手軽に始められます。今回の HTTP モックサーバーも小規模であれば Free プランで利用可能です。継続的に利用する場合や規模を拡大する際には、有料プランの利用を検討しましょう。

HTTP モックサーバーの作成手順

Postman はドキュメントが充実しており、Postman mock server というページに HTTP モックサーバーの手順が記載(英語のみ)されています。ここではポイントを紹介します。

※ Postman のアカウント作成は https://www.postman.com/postman-account/ で行えます。済ませておいてください。

1. Postman の管理画面上に、Mock server (モックサーバー) メニューを出現させる

モックサーバーを作りたいワークスペース(アカウント作成直後であれば “My Workspace”) を開き、左のサイドバーから「ワークスペースサイドバーを設定」をクリックした後、モックサーバー を有効化します。

すると、サイドバーに “モックサーバー” が表示されます。もしすでに表示されていたら、次の手順に進みます。

2. モックサーバーを作成する

  1. サイドバーの[モックサーバー][モックサーバーを作成]とクリックしていく
    1. “モックサーバーを作成” というページが開きます
  2. “1. 新しいコレクションを作成” のタブが開いている事を確認して、[リクエストメソッド]の一覧から POST を選択する
    1. この時、POST の行が自動的に増えます(GET の行は残りますが、実際は POST のみ作られます)
    2. 増えた行に対して、その他のパラメータ(リクエスト URL、レスポンスコード、レスポンスボディ)は設定しません
    3. 以上が済んだら[次に進む]をクリックします
  3. “2. 設定” のタブが開いていることを確認して、[モックサーバーの名前]を設定する
    1. 例として “My1stMockServer” とします
    2. その他のパラメータ(環境、固定ネットワークの遅延をシミュレート、等)は設定しません
    3. 以上が済んだら[モックサーバーを作成]をクリックします

“My1stMockServer” のページが表示されたら、HTTP POST を受け取るモックサーバーの作成完了です。

3. リクエストを確認する

この時点で HTTP モックサーバーの動作を確認してみましょう。

“My1stMockServer” の右側にある[コレクションドキュメント]を開くと、cURLを始めとしたツール/言語によるリクエストサンプルが提示されています。ターミナル等で実行してみましょう。

curl --location --request POST 'https://***.mock.pstmn.io/' --data ''

リクエストを実行した後、”My1stMockServer” で[ログを更新]をクリックすると、先ほどのリクエストが確認できます( --data '' と何も設定していないので、リクエスト ボディは  “空” となっています)

4. レスポンス ボディを追加する

これだけでも十分役割を果たしますが、レスポンス ボディを設定もしてみましょう。

サイドバーの[コレクション] → “My1stMockServer” のツリーで “POST” → “デフォルト” と開いていくと、POST リクエストに対するレスポンス ボディが設定できます。

“ボディ” に以下のように指定します。

{ "your payload is": "{{$body 'payload'}}" }

その後、右上の[保存]をクリックします。設定はこの時点で反映されます。

{{$body}} というのは、Postman 固有の template helperです。詳しくはUsing template helperをご覧ください。他にも {{$timestamp}} などの動的データを返してくれる変数が存在します。詳しくはGenerating random data with dynamic variablesをご覧ください。
※未加工のPOST BODY全体を得る方法を見つけることができませんでした(2024年11月現在)

5. 再度、リクエストを確認する

以下のように送信すると、送信時に payload に設定したデータがレスポンス ボディに設定した定義でフォーマットされ返却されます。

curl --location --request POST 'https://***.mock.pstmn.io/' --data 'payload=Hello'
#=> { "Your payload is": "Hello" }

これで、HTTP モックサーバーの設定もできるようになりました。

SORACOM Beam や Flux からの指定方法

SORACOM Beam の「転送先」に、Postman の HTTP モックサーバーを指定します。例として「HTTP エントリーポイント(HTTP → HTTPS)」では、以下のように設定します。URL からホスト名・ポート番号・パスを分解して入力するのがポイントです。
これで、デバイスから http://uni.soracom.io に HTTP POST すると、Postman の HTTP モックサーバーにデータ転送されます。

SORACOM Flux の「Webhook アクション」では、以下のように設定します。こちらはURLを入力します。
これで、このアクションが起動すると HTTP モックサーバーにデータが送信されます。

より高度な設定と削除

HTTP モックサーバーでのメソッドやパスの増やし方

Postman のモックサーバーは API ゲートウェイサービスのように、メソッドやパスの追加が可能です。手順は以下の通りです。

  1. サイドバーの[コレクション]→ “My1stMockServer” の三点メニュー(右側の “…” と表示されている部分) → [リクエストの追加] で、新規リクエストを追加できます
  2. “GET” となっている部分を必要な HTTP メソッドに変更(例: POST)し、右の[URL を入力するかテキストを貼り付け]となっている部分に {{url}}/foobar と入力します
  3. 最後に[保存]をクリックします

これで「POST https://***.mock.pstmn.io/foobar」で受け付けられます。

{{url}} はコレクションの変数で、変数の内容は “My1stMockServer” のページで確認できます。

削除

最後に削除の方法です。

  • サイドバーの[コレクション] → “My1stMockServer” の三点メニュー → [削除]
  • サイドバーの[モックサーバー] → “My1stMockServer” の三点メニュー → [削除]

以上2つの削除で、きれいに片付きます。

おわりに

実は SORACOM Beam には設定不要・無料で利用可能な「SORACOM Beam テストサーバー」があり、データ自体の確認はこれでも十分です。Postman の HTTP モックサーバーでは、ログの確認やレスポンス ボディの加工ができたりと、より実装に近い事が行えます。

使い分けについても SORACOM Beam や Flux を利用しておけば、デバイスに触れることなくデータ送信先を変更できるので、ぜひ利用を検討してみてください。

― ソラコム松下(Max)