記錄和匯出代理活動

一目了然
目標: 記錄並匯出開發代理活動到報告檔案
時間: 10分鐘
插件:ExecutionSummaryPlugin、 MarkdownReporter
前置條件:設定開發代理

若要記錄和導出 Proxy 活動,請使用 元件檔中的 ExecutionSummaryPlugin 和記者外掛程式。

下列範例示範如何使用 ExecutionSummaryPlugin 和 MarkdownReporter 外掛程式,設定 Dev Proxy 來記錄和導出 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 預設,記錄應用程式呼叫的網址及其活動摘要:

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

欲了解更多資訊,請參閱 使用預設配置。

注意

若要匯出活動,必須在組態檔中啟用記者外掛程式,並將記者外掛程式放在 ExecutionSummaryPlugin 外掛程式清單中的後面。 建議將記者外掛程式放在外掛程式清單的結尾。

若要記錄活動,開發人員 Proxy 必須置於記錄模式中。

有兩種方式可以開始錄製:

  • 立即記錄。 使用 --record 選項啟動 Proxy, 例如 devproxy --record。
  • 記錄即興。 執行 Proxy 時按 R 。

啟用錄製時, ◉ Recording... 會在 Proxy 輸出中顯示。

若要從錄製的活動產生報告,請停止錄製。

有兩種方式可以停止錄製:

  • 停止代理。 按 Ctrl + C。
  • 停止臨機操作。 按 S.

依預設,活動會依 URL 分組。 若要依訊息類型分組活動,請使用 --summary-group-by 選項。

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

報告撰寫地點

當你停止記錄時,每個啟用的報告器會為由報告外掛產生的每個報告寫入一個檔案。 Dev Proxy 會把檔案寫入目前的工作目錄,也就是你啟動 Dev Proxy 的資料夾。 當你在背景啟動 Dev Proxy,例如在 CI 管線中時,務必從你想要儲存報告的資料夾中啟動它。

報告檔案使用以下命名模式:

<ReportingPlugin>_<Reporter>.<ext>

例如,本文中的配置會產生一個名為 ExecutionSummaryPlugin_MarkdownReporter.md的檔案。

如果已有該名稱的檔案存在,Dev Proxy 不會覆蓋它。 相反地,它會在檔名後加上以 yyyyMMddHHmmss 格式的時間戳記,例如 ExecutionSummaryPlugin_MarkdownReporter_20261105103000.md。 Dev Proxy 會記錄它所寫入的每個報告檔案名稱,例如:

Writing report ExecutionSummaryPlugin to ExecutionSummaryPlugin_MarkdownReporter.md...

下表列出每位報告者使用的擴充功能。

記者 Extension
JsonReporter .json (有些報告使用不同的副檔名,例如 UrlDiscoveryPlugin 的 .jsonc)
MarkdownReporter .md
PlainTextReporter .txt

注意

所有錄製都是本機的。 不會傳送任何數據至Microsoft。

從腳本與 CI 記錄

在腳本和 CI/CD 管線中,你無法按鍵來開始或停止錄製。 相反地,請在背景執行 Dev Proxy,並用 Dev Proxy API 來控制記錄。 所有 API 請求都需要 Bearer Token。 若要預先指定 token,先將 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. 使用 HTTPS_PROXY 和 HTTP_PROXY 環境變數指向 Dev Proxy 來執行您的工作負載。
  6. 停止錄製: POST /proxy 與 {"recording": false}。 請求會在報表產生器完成後回傳,所以在其完成時報表已準備就緒。
  7. 關閉 Dev Proxy:POST /proxy/stopProxy。

Dev Proxy 會把報告寫入你從中啟動 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)的更多資訊,包括信任憑證,請參見「 在 CI/CD 情境中使用開發代理」。

另請參閱