開始使用Dev Proxy
Dev Proxy 是一種命令行工具,可協助您模擬雲端 API 的行為和錯誤,以協助您建置復原的應用程式。
在本教學課程中,您將瞭解如何安裝、執行及設定 Dev Proxy。
如果您遇到任何困難,請提出 新問題 來與我們連絡,我們很高興能協助您。
安裝 Dev Proxy
安裝 Dev Proxy 最簡單的方式是使用 winget。 或者,您可以手動安裝Dev Proxy。
若要使用 winget 安裝 Dev Proxy,請執行下列命令:
winget install Microsoft.DevProxy --silent
重要
Dev Proxy 安裝程式會將新專案新增至PATH。 若要在安裝之後使用 Dev Proxy,您必須重新啟動命令提示字元,以確保 PATH 環境變數已重新整理。
安裝 Dev Proxy 最簡單的方式是使用 Homebrew。 或者,您可以手動安裝Dev Proxy。
第一次啟動開發 Proxy
第一次在計算機上啟動 Dev Proxy 時,有一些步驟可遵循,以確保 Dev Proxy 可以攔截來自您電腦的要求並成功回應。 第一次執行之後,您不需要重複這些步驟。
- 啟動Dev Proxy。 開啟命令提示字元會話。 輸入
devproxy
,然後按 Enter。 - 信任憑證。 Dev Proxy 會安裝名為 的
Dev Proxy CA
憑證。 顯示警告。 選取Yes
以確認您想要安裝憑證。 Dev Proxy 會使用此憑證來解密從您的電腦傳送的 HTTPS 流量。 - 允許防火牆存取。 Windows 防火牆會封鎖 Proxy。 顯示警告。 選取
Allow access
按鈕以允許流量通過防火牆。
- 啟動Dev Proxy。 開啟命令提示字元會話。 輸入
devproxy
,然後按 Enter。 - 信任憑證。 Dev Proxy 會安裝名為 的
Dev Proxy CA
憑證,它會用來解密從您的電腦傳送的 HTTPS 流量。 顯示警告。 按 y 以確認您想要信任憑證。 - 接受連入連線。 顯示警告。 選取
Allow
以確認。
命令提示字元會顯示下列輸出:
8 error responses loaded from devproxy-errors.json
Listening on 127.0.0.1:8000...
Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy
根據預設,Dev Proxy 會設定為:
- 攔截對任何 JSON 佔位元 API 端點提出的要求
- 模擬 API 錯誤回應和 API 節流,失敗率為 50%
攔截要求
Dev Proxy 會攔截從您電腦上任何應用程式對已知 URL 提出的要求。 偵測到要求時,開發人員 Proxy 會將要求傳遞至 API (不採取任何動作) ,或傳回回應。
- 從命令行將要求傳送至 JSON 佔位元 API,並切換回 Proxy 進程以檢視輸出。
在 PowerShell 中 Invoke-WebRequest
,使用 Cmdlet 將 GET 要求傳送至 JSON 佔位元 API。
Invoke-WebRequest -Uri https://jsonplaceholder.typicode.com/posts
如果您使用 curl
,請使用下列命令,將 GET 要求傳送至 JSON 佔位元 API。
curl -ix http://localhost:8000 https://jsonplaceholder.typicode.com/posts
您也可以使用 Postman 之類的 API 用戶端,將 GET 要求傳送至 https://jsonplaceholder.typicode.com/posts
。
項目會顯示一些有關傳入要求的基本資訊,以及 Dev Proxy 所執行的動作。 Dev Proxy 會模擬有 50% 機率的錯誤回應。 如果您的要求未傳回錯誤,開發人員 Proxy 就會通過。
request GET https://jsonplaceholder.typicode.com/posts
api ╭ Passed through
╰ GET https://jsonplaceholder.typicode.com/posts
- 重複從命令行將要求傳送至 JSON 佔位元 API,直到傳回錯誤回應為止。
request GET https://jsonplaceholder.typicode.com/posts
api ╭ Passed through
╰ GET https://jsonplaceholder.typicode.com/posts
request GET https://jsonplaceholder.typicode.com/posts
chaos ╭ 403 Forbidden
╰ GET https://jsonplaceholder.typicode.com/posts
當 Dev Proxy 傳回錯誤回應時,專案會顯示標籤 chaos
。
- 嘗試將要求傳送至 JSON 佔位元 API 上可用的其他端點
https://jsonplaceholder.typicode.com/posts
https://jsonplaceholder.typicode.com/posts/1
https://jsonplaceholder.typicode.com/posts/1/comments
https://jsonplaceholder.typicode.com/comments?postId=1
安全地停止開發 Proxy
當您不再需要執行 Dev Proxy 時,應該一律安全地停止它。
- 按 Ctrl + C 以安全地停止開發 Proxy。
如果您關閉命令提示字元會話,Dev Proxy 不會正確地取消註冊為系統 Proxy,而且可能會遇到一些 常見問題。
將 URL 更新為 watch
根據預設,開發人員 Proxy 會設定為攔截 對 JSON 佔位元 API 提出的任何要求。 您可以將 Dev Proxy 設定為攔截任何 HTTP API 的要求。
- 在命令提示字元中,執行
brew list dev-proxy
以找出安裝資料夾。 - 在 Finder 中開啟 Dev Proxy 安裝資料夾。
- 在開發人員 Proxy 安裝資料夾中,於文字編輯器中開啟
devproxyrc.json
。 urlsToWatch
找出陣列。
"urlsToWatch": [
"https://jsonplaceholder.typicode.com/*"
],
陣列 urlsToWatch
代表已知的URL。 Dev Proxy 會監看目前專案到任何端點的要求。 專案會在 URL 後面使用星號做為通配符。 在此陣列中新增更多專案,會展開開發人員 Proxy 所注意的URL。
讓我們考慮您不想讓 Dev Proxy 攔截對特定端點提出的要求。
- 將新專案新增至
urlsToWatch
陣列。
"urlsToWatch": [
"!https://jsonplaceholder.typicode.com/posts/2",
"https://jsonplaceholder.typicode.com/*"
],
URL 開頭的驚嘆號會告知開發人員 Proxy 忽略任何符合該 URL 的要求。 您可以在 URL 中混合和比對驚歎號和星號。
- 在命令行中,輸入
devproxy
,然後按 Enter 以啟動 Dev Proxy。 - 從命令行將要求傳送至
https://jsonplaceholder.typicode.com/posts/2
,並檢視輸出。
顯示專案,確認已忽略要求並傳遞至 API。
request GET https://jsonplaceholder.typicode.com/posts/2
api ╭ Passed through
╰ GET https://jsonplaceholder.typicode.com/posts/2
陣列中 urlsToWatch
列出 URL 的順序很重要。 開發人員 Proxy 會依序處理這些 URL。 URL 相符時,不會再次處理。 因此,先放置 URL 可確保在處理下一個 URL 之前忽略要求。
變更失敗率
根據預設,開發人員 Proxy 會設定為失敗要求,且有 50% 的機會讓正在監看的 URL 失敗。 您可以增加或減少要求傳回錯誤回應的機會。
讓我們更新失敗率,讓 JSON 佔位元 API 的每個要求都會傳回錯誤回應。
- 在開發人員 Proxy 安裝資料夾中,於文字編輯器中開啟
devproxyrc.json
。 - 找出
rate
屬性並將值從50
更新為100
。
檔案 devproxyrc.json
包含當您啟動 Dev Proxy 時所使用的組態設定。 變更組態設定時,您應該一律停止並啟動 Dev Proxy,以便保存變更。
- 在命令行中,輸入
devproxy
,然後按 Enter 以啟動 Dev Proxy。 - 從命令行將要求傳送至 JSON 佔位元 API,並檢視輸出。
或者,您可以在啟動 Dev Proxy 時使用 選項, --failure-rate
在運行時間覆寫組態設定。
devproxy --failure-rate 100
- 按 Ctrl + C 以安全地停止開發 Proxy。
模擬節流
根據預設,Dev Proxy 會傳回泛型 400 和 500 錯誤回應的範圍。 您可以自定義這些錯誤回應,以符合您自己的需求。
開發人員 Proxy 會使用 外掛程式 來啟用不同的 API 行為,根據預設,我們會為您啟用兩個外掛程式。
- GenericRandomErrorPlugin 外掛程式可讓您讓 Dev Proxy 回應錯誤回應。
- RetryAfterPlugin 外掛程式可讓您讓 Dev Proxy 將動態值插入錯誤回應中的 Retry-After 標頭。
讓我們變更設定,讓 Dev Proxy 一律傳 429 Too Many requests
回錯誤回應以模擬節流。
首先,讓我們找出包含錯誤定義的檔案位置。
- 在開發人員 Proxy 安裝資料夾中,於文字編輯器中開啟
devproxyrc.json
。 - 在陣列中
plugins
,找出 GenericRandomErrorPlugin 外掛程式的專案。 請注意 屬性的值configSection
。 - 在檔案的下一步,找出
genericRandomErrorPlugin
物件。 請注意 屬性的值errorsFile
。
提示
當您啟動 Dev Proxy 時,錯誤檔案的位置也會顯示在輸出中。
- 在開發人員 Proxy 安裝資料夾中,於文字編輯器中開啟
devproxy-errors.json
。 - 拿掉陣列中的所有
responses
回應專案,但回應除外429
。
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/genericrandomerrorplugin.schema.json",
"responses": [
{
"statusCode": 429,
"body": {
"message": "Too Many Requests",
"details": "The user has sent too many requests in a given amount of time (\"rate limiting\")."
},
"headers": {
"Retry-After": "@dynamic"
}
}
]
}
- 在命令行中,輸入
devproxy
,然後按 Enter 以啟動 Dev Proxy。 - 從命令行將要求傳送至 JSON 佔位元 API,並檢視輸出。
request GET https://jsonplaceholder.typicode.com/posts
chaos ╭ 429 TooManyRequests
╰ GET https://jsonplaceholder.typicode.com/posts
- 按 Ctrl + C 以安全地停止開發 Proxy。
後續步驟
瞭解如何使用Dev Proxy來模擬您自己的應用程式隨機錯誤。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應