プロキシ アクティビティの記録とエクスポート

概要
目標: Dev Proxy アクティビティをレポート ファイルに記録してエクスポートする
時間: 10 分
Plugins:ExecutionSummaryPlugin、 MarkdownReporter
前提条件:開発プロキシを設定する

プロキシ アクティビティを記録およびエクスポートするには、構成ファイルで ExecutionSummaryPlugin とレポーター プラグインを使用します。

次の例は、ExecutionSummaryPlugin および MarkdownReporter プラグインを使用してプロキシ アクティビティを記録およびエクスポートするように Dev Proxy を構成する方法を示しています。

ファイル: devproxyrc.json

{
  "plugins": [
    {
      "name": "ExecutionSummaryPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
        "name": "MarkdownReporter",
        "enabled": true,
        "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ]
}

Tip

構成を自分で作成する代わりに、既製の api-inventory プリセットをダウンロードできます。このプリセットには、アプリが呼び出す URL とそのアクティビティの概要が記録されます。

devproxy config get api-inventory
devproxy --config-file "~dataFolder/configs/api-inventory/.devproxy/devproxyrc.json" --urls-to-watch "https://api.contoso.com/*"

詳細については、「プリセット構成を使用する」を参照してください。

注

アクティビティをエクスポートするには、構成ファイルでレポーター プラグインを有効にし、プラグインの一覧の ExecutionSummaryPlugin の後に配置する必要があります。 プラグインリストの最後にレポータープラグインを配置することをお勧めします。

アクティビティを記録するには、Dev Proxy をレコード モードにする必要があります。

記録を開始するには、次の 2 つの方法があります。

  • すぐに記録する。 --record オプションを使用してプロキシを起動します。たとえば devproxy --record です。
  • アドホック記録。 プロキシの実行中に、R を押します。

録画を有効にすると、◉ Recording... がプロキシの出力に表示されます。

記録されたアクティビティからレポートを作成するには、記録を停止してください。

記録を停止するには、2 つの方法があります:

  • プロキシを停止する。 Ctrl + C キーを押します。
  • アドホックを停止する。 S キーを押します。

デフォルトでは、アクティビティは URL ごとにグループ化されます。 メッセージの種類別にアクティビティをグループ化するには、 --summary-group-by オプションを使用します。

devproxy --record --summary-group-by messageType

レポートが作成される場所

記録を停止すると、有効になっている各レポーターは、レポート プラグインによって生成されたレポートごとに 1 つのファイルを書き込みます。 開発プロキシは、現在の作業ディレクトリ (開発プロキシを開始したフォルダー) にファイルを書き込みます。 たとえば CI パイプラインなどで Dev Proxy をバックグラウンドで起動する場合は、レポートを保存するフォルダーから起動してください。

レポート ファイルでは、次の名前付けパターンを使用します。

<ReportingPlugin>_<Reporter>.<ext>

たとえば、この記事の設定では、ExecutionSummaryPlugin_MarkdownReporter.md という名前のファイルが生成されます。

その名前のファイルが既に存在する場合、Dev Proxy はそれを上書きしません。 代わりに、ExecutionSummaryPlugin_MarkdownReporter_20261105103000.md形式のタイムスタンプがファイル名に追加されます。たとえばyyyyMMddHHmmssです。 Dev Proxy は、書き込む各レポート ファイルの名前をログに記録します。次に例を示します。

Writing report ExecutionSummaryPlugin to ExecutionSummaryPlugin_MarkdownReporter.md...

次の表に、各レポーターが使用する拡張機能を示します。

レポーター Extension
JsonReporter .json (一部のレポートでは、たとえば UrlDiscoveryPlugin では .jsonc のように、別の拡張子が使用されています)
MarkdownReporter .md
PlainTextReporter .txt

注

すべての録画はローカルで行われます。 Microsoft にはデータは送信されません。

スクリプトと CI のレコード

スクリプトと CI/CD パイプラインでは、キーを押して記録を開始および停止することはできません。 代わりに、Dev Proxy API を使用して、バックグラウンドで Dev Proxy を実行し、記録を制御します。 すべての API 要求にはベアラー トークンが必要です。 トークンを事前に設定するには、開発プロキシを開始する前に、DEV_PROXY_API_TOKEN 環境変数を少なくとも 32 文字の値に設定します。

最小シーケンスは次のとおりです。

  1. DEV_PROXY_API_TOKENを 32 文字以上のランダムな値に設定します。
  2. バックグラウンドで開発プロキシを起動する: devproxy --detach --as-system-proxy false -c devproxyrc.json。
  3. GET /proxyが成功するまで待ちます。
  4. 記録の開始: POST /proxy と {"recording": true}。
  5. Dev Proxy を指す HTTP_PROXY と HTTPS_PROXY 環境変数を使用してワークロードを実行します。
  6. 記録の停止: POST /proxy と {"recording": false}。 レポート生成が終わると要求が戻ってくるため、処理が完了した時点でレポートの準備が整います。
  7. Dev Proxy をシャットダウンする: POST /proxy/stopProxy。

Dev Proxyは、レポートを起動元となったフォルダーに書き込みます。

#!/usr/bin/env bash
set -euo pipefail

# 1. use a known API token (at least 32 characters)
export DEV_PROXY_API_TOKEN=$(openssl rand -hex 32)
api=http://127.0.0.1:8897
auth="Authorization: Bearer $DEV_PROXY_API_TOKEN"

# 2. start Dev Proxy in the background
devproxy --detach --as-system-proxy false -c devproxyrc.json

# 3. wait for the API
until curl -sf -H "$auth" "$api/proxy" > /dev/null; do sleep 1; done

# 4. start recording
curl -sf -X POST "$api/proxy" -H "$auth" -H "Content-Type: application/json" -d '{"recording": true}'

# 5. run the workload through Dev Proxy
HTTP_PROXY=http://127.0.0.1:8000 HTTPS_PROXY=http://127.0.0.1:8000 npm test

# 6. stop recording and wait for the reports
curl -sf -X POST "$api/proxy" -H "$auth" -H "Content-Type: application/json" -d '{"recording": false}'

# 7. shut down Dev Proxy
curl -sf -X POST "$api/proxy/stopProxy" -H "$auth"

この例では、既定のプロキシ ポート 8000 と API ポート 8897を使用します。 API 呼び出しが Dev Proxy を経由しないように、ワークロードにのみプロキシ環境変数を設定します。 HTTPS トラフィックをインターセプトするには、ワークロードが Dev Proxy ルート証明書を信頼する必要があります。 証明書の信頼など、パイプラインでの Dev Proxy の実行の詳細については、「CI/CD シナリオでの Dev Proxy の使用」を参照してください。

こちらも参照ください