一目了然
目標: 記錄並匯出開發代理活動到報告檔案
時間: 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 個字元,再開始開發代理。
最小序列為:
- 設定
DEV_PROXY_API_TOKEN為至少 32 個字元的隨機值。 - 在背景啟動開發代理:
devproxy --detach --as-system-proxy false -c devproxyrc.json。 - 等到
GET /proxy成功為止。 - 開始錄製:
POST /proxy與{"recording": true}。 - 使用
HTTPS_PROXY和HTTP_PROXY環境變數指向 Dev Proxy 來執行您的工作負載。 - 停止錄製:
POST /proxy與{"recording": false}。 請求會在報表產生器完成後回傳,所以在其完成時報表已準備就緒。 - 關閉 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 情境中使用開發代理」。
另請參閱
- ExecutionSummaryPlugin - 完整參考
- MarkdownReporter - 報表格式
- 代理 API - 程式化控制 Dev Proxy
- 在 CI/CD 情境中使用 Dev Proxy - 在管線中執行 Dev Proxy
- 詞彙表 - 開發代理術語
- 在 CI/CD 情境中使用 Dev Proxy - 在管線中記錄 API 呼叫
- 使用預設設定 - 現成設定