メインコンテンツまでスキップ

Map Remote

Proxyman の Map Remote を使うと、一致する HTTP、HTTPS、WebSocket のリクエストを、localhost やステージング環境などの別のホスト、ポート、パスにリダイレクトできます。

1. 概要​

Map Remote(⌥⌘R)は、ルールに基づいて HTTP リクエストの送信先を新しいサーバーに変更します。クライアントは、何も変わっていないかのように新しいサーバーからレスポンスを受け取ります。

Map Remote は、HTTP から HTTPS へ、またその逆へのマッピングにも対応しています。

Localhost to Production、Staging to Production、正規表現ルールが表示された Proxyman の Map Remote ウィンドウ

Map Remote のルール

備考

HTTP <-> HTTPS の間でマッピングする場合は、一般的な Map Remote の設定例 をご覧ください。

備考

Proxyman 4.3.0 以降では、Map Remote は WebSocket と Secure WebSocket に対応しています。

2. メリット​

  • ソースコードを変更せずに、開発環境の Web サイトで一部のエンドポイントに本番環境のエンドポイントを使用できます。
  • 本番環境の Web サイトで開発環境のエンドポイントを使用できます。
  • 特定のリクエスト URL を別の送信先に送れます。
  • Protocol、Host、Port、Path、Query などのリクエストの構成要素を、その場で置き換えられます。
備考

簡単な JavaScript を書くだけで Map Remote と同じ結果を得たい場合は、Scripting 機能 を使えます。

たとえば、本番環境から localhost サーバーに変更する Snippet Code があります。

3. GraphQL リクエストで Map Remote を使う​

Proxyman 2.27.0 以降では、特定の QueryName を指定して、Map Remote で GraphQL リクエストを扱えます。詳しくは以下の GraphQL のドキュメントをご覧ください。

4. Scripting で Map Remote を実現する ✅​

Map Remote のルールの設定が難しい場合は、Scripting Tool を使うと簡単に設定できます。

Scripting を使って Map Remote と同じ結果を得る方法は、Map Remote の Snippet Code をご覧ください。

たとえば、Scripting で次のような処理も簡単に行えます。

  • v1 のエンドポイントを v2 にマッピングする
  • 本番環境を localhost にマッピングする
  • localhost を本番環境にマッピングする
  • ...

5. マッチングルール​

備考

Proxyman 2.3.0 以降では、正規表現 とワイルドカードに対応しています。ワイルドカードと正規表現の使い方 をご覧ください。

マッチングルールは、ワイルドカードまたは正規表現 を使って定義できます。

一致したリクエストに対して、Proxyman は次の処理を試みます:

  • 設定されている場合、Protocol、Host、Port、Path、Query を置き換える
  • 構成要素が空欄の場合、一致したリクエストのその構成要素は変更しない
http://localhost:3000/* を https://httpbin.proxyman.app にマッピングする Proxyman Map Remote のルールエディタ

Map Remote ルールエディタ

備考
  • テキストフィールドを空欄にすると、一致したリクエストのその部分は変更されません
  • Map To のフィールドではワイルドカードは使用できません

デバッグ​

URL にどの Map Remote ルールが一致しているかを確認するには、リクエストの Summary タブを開きます:

  1. リクエストを選択します
  2. Summary タブ -> Debugging Tools
  3. マッピング後の URL を確認します

Host ヘッダーを保持する​

デフォルトでは、Proxyman は Map Remote で指定した新しいホストに合わせて Host ヘッダーを上書きします。ほとんどのリクエストを成功させるには、この動作が必要です。

元の Host ヘッダーを保持したい場合は、新しいエントリを作成するときに「Preserve Host Header」チェックボックスをオンにします。Proxyman は Host の値をそのまま保持します。

6. 使い方​

  • 選択したリクエストを右クリックし、Tools -> Map Remote… を選択します。Proxyman は選択したリクエストから必要なデータを自動で入力します。
Tools > Map Remote... がハイライトされた、リクエストの右クリックメニューの Proxyman 画面

リクエストから Map Remote ルールを作成する

7. よくある使い方​

7.1 localhost(HTTP)から本番環境(HTTPS)へマッピングする​

結果:

元の URL変換後の URL
http://localhost:3000https://proxyman.io
http://localhost:3000/pricinghttps://proxyman.io/pricing
http://localhost:3000/v1/user?id=123\&name=proxymanhttps://proxyman.io/v1/user?id=123\&name=proxyman
POST http://localhost:3000/loginPOST https://proxyman.io/login

7.2 本番環境(HTTPS)から localhost(HTTP)へマッピングする​

元の URL変換後の URL
https://proxyman.iohttp://localhost:3000
https://proxyman.io/v1/user?id=123\&name=proxymanhttp://localhost:3000/v1/user?id=123\&name=proxyman
POST https://proxyman.io/loginPOST http://localhost:3000/login

7.3 特定の URL を別のホストへマッピングする​

  • ルール:https://proxyman.io/v1/user (例)
  • Any と Wildcard を選択します
  • 「Include all subpaths of this URL」のチェックを外す: チェックを外すと、他のサブパスはマッピングされません

Map To:

  • Protocol:https
  • Host:新しいホスト(例:staging.proxyman.io)
  • Port:443(ローカルのポート)
  • Path と Query は空欄のままにします

結果:

元の URL変換後の URL
https://proxyman.iohttps://proxyman.io (ルールは適用されない)
https://proxyman.io/v2/settinghttps://proxyman.io/v2/setting (ルールは適用されない)
https://proxyman.io/v1/user?id=123\&name=proxymanhttps://staging.proxyman.io/v1/user?id=123\&name=proxyman

7.4 localhost から本番環境へ WebSocket をマッピングする​

元の URL変換後の URL
ws://localhost:4000wss://ws.postman-echo.com
ws://localhost:4000/websocketwss://ws.postman-echo.com/websocket

7.5 本番環境から localhost へ WebSocket をマッピングする​

元の URL変換後の URL
wss://ws.postman-echo.comws://localhost:3000
wss://ws.postman-echo.com/websocketws://localhost:3000/websocket

さらに詳しく​