開始使用開發 Proxy
開發人員 Proxy 是一種命令行工具,可協助您模擬雲端 API 的行為和錯誤,以協助您建置復原的應用程式。
在本教學課程中,您將瞭解如何安裝、執行及設定開發 Proxy。
如果您遇到任何困難,請毫不猶豫地通過提出 新問題 與我們連絡,我們很高興能協助您。
安裝開發 Proxy
安裝 Dev Proxy 最簡單的方式是使用 winget。 或者,您可以手動安裝Dev Proxy。
若要使用 winget 安裝 Dev Proxy,請執行下列命令:
winget install Microsoft.DevProxy --silent
重要
開發人員 Proxy 安裝程式會將新的專案新增至PATH。 若要在安裝之後使用 Dev Proxy,您必須重新啟動命令提示字元,以確保 PATH 環境變數已重新整理。
安裝Dev Proxy最簡單的方式是使用Homebrew。 或者,您可以手動安裝Dev Proxy。
安裝 Dev Proxy 最簡單的方式是使用安裝腳本。 或者,您可以手動安裝Dev Proxy。
若要使用安裝文稿安裝 Dev Proxy,請執行下列命令:
bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"
如果您使用 PowerShell,請執行下列命令:
(Invoke-WebRequest https://aka.ms/devproxy/setup.ps1).Content | Invoke-Expression
第一次啟動開發 Proxy
第一次在計算機上啟動 Dev Proxy 時,有一些步驟需要遵循,以確保開發 Proxy 可以攔截來自您機器的要求並成功回應。 您不需要在第一次執行之後重複這些步驟。
- 啟動開發 Proxy。 開啟命令提示字元會話。 輸入
devproxy
,然後按 Enter。 - 信任憑證。 開發 Proxy 會安裝名為的
Dev Proxy CA
憑證。 顯示警告。 選取Yes
以確認您要安裝憑證。 開發 Proxy 會使用此憑證來解密從您的電腦傳送的 HTTPS 流量。 - 允許防火牆存取。 Windows 防火牆會封鎖 Proxy。 顯示警告。 選取
Allow access
按鈕以允許流量通過防火牆。
- 啟動開發 Proxy。 開啟命令提示字元會話。 輸入
devproxy
,然後按 Enter。 - 信任憑證。 Dev Proxy 會安裝名為
Dev Proxy CA
的憑證,其會用來解密從您的電腦傳送的 HTTPS 流量。 顯示警告。 按 y 確認您想要信任憑證。 - 接受連入連線。 顯示警告。 選取
Allow
以確認。
啟動開發 Proxy。 開啟命令提示字元會話。 輸入
devproxy
,然後按 Enter。信任憑證。 開發 Proxy 會使用自定義 SSL 憑證來解密從您的電腦傳送的 HTTPS 流量。
重要
下列指示適用於Ubuntu。 對於其他Linux發行版,這些步驟可能會有所不同。
若要安裝並信任憑證,請在新的命令提示字元中執行下列命令:
# Export Dev Proxy root certificate openssl pkcs12 -in ~/.config/dev-proxy/rootCert.pfx -clcerts -nokeys -out dev-proxy-ca.crt -passin pass:"" # Install the certificate sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/ # Update certificates sudo update-ca-certificates
命令提示字元會顯示下列輸出:
info 8 error responses loaded from devproxy-errors.json
info Dev Proxy API listening on http://localhost:8897...
info Dev Proxy 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%
攔截要求
開發人員 Proxy 會攔截從您電腦上任何應用程式對已知 URL 提出的要求。 偵測到要求時,Dev 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
。
項目會顯示一些有關傳入要求的基本資訊,以及開發 Proxy 所執行的動作。 開發人員 Proxy 會模擬錯誤回應,且機率為 50%。 如果您的要求未傳回錯誤,Dev Proxy 會通過它。
req ╭ GET https://jsonplaceholder.typicode.com/posts
api ╰ Passed through
- 重複從命令行將要求傳送至 JSON 佔位元 API,直到傳回錯誤回應為止。
req ╭ GET https://jsonplaceholder.typicode.com/posts
api ╰ Passed through
req ╭ GET https://jsonplaceholder.typicode.com/posts
oops ╰ 403 Forbidden
當 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
根據預設,開發人員 Proxy 會設定為攔截對 JSON 佔位元 API 所做的任何要求。 您可以設定 Dev Proxy 來攔截任何 HTTP API 的要求。
- 在命令行中執行 ,以開啟 Dev Proxy 組態檔:
devproxy config
。 urlsToWatch
找出陣列。
"urlsToWatch": [
"https://jsonplaceholder.typicode.com/*"
],
陣列 urlsToWatch
代表已知的URL。 開發 Proxy 會監看從目前專案到任何端點的要求。 專案會在 URL 之後使用星號作為通配符。 將更多專案新增至此陣列會展開開發 Proxy 所注意的 URL。
讓我們考慮一下,您不希望 Dev Proxy 攔截對特定端點提出的要求。
- 將新專案新增至
urlsToWatch
陣列。
"urlsToWatch": [
"!https://jsonplaceholder.typicode.com/posts/2",
"https://jsonplaceholder.typicode.com/*"
],
URL 開頭的驚嘆號會指示 Dev Proxy 忽略任何符合該 URL 的要求。 您可以在 URL 中混合和比對驚歎號和星號。
- 在命令行中,輸入 ,然後按 Enter
devproxy
以啟動開發 Proxy。 - 從命令行將要求傳送至
https://jsonplaceholder.typicode.com/posts/2
,並檢視輸出。
當忽略的 URL 與要求相符時,Dev Proxy 不會處理要求,因此不會顯示任何輸出。
陣列中 urlsToWatch
列出 URL 的順序很重要。 開發 Proxy 會依序處理這些 URL。 當 URL 相符時,不會再處理它。 因此,先放置 URL 可確保在處理下一個 URL 之前,先忽略要求。
變更失敗率
根據預設,開發人員 Proxy 會設定為失敗要求,並有機會看到 URL 50%。 您可以增加或減少要求傳回錯誤回應的機會。
讓我們更新失敗率,讓 JSON 佔位元 API 的每個要求都會傳回錯誤回應。
- 在命令行中執行 ,以開啟 Dev Proxy 組態檔:
devproxy config
。 - 找出 屬性,
rate
並將值從50
更新為100
。
檔案 devproxyrc.json
包含您啟動開發 Proxy 時所使用的組態設定。 變更組態設定時,您應該一律停止並啟動 Dev Proxy,以便保存變更。
- 在命令行中,輸入 ,然後按 Enter
devproxy
以啟動開發 Proxy。 - 從命令行將要求傳送至 JSON 佔位元 API,並檢視輸出。
或者,您可以使用啟動開發 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
回錯誤回應以模擬節流。
首先,讓我們找出包含錯誤定義的檔案位置。
- 在命令行中執行 ,以開啟 Dev Proxy 組態檔:
devproxy config
。 - 在陣列中
plugins
,找出 GenericRandomErrorPlugin 外掛程式的專案。 請注意 屬性的值configSection
。 - 在檔案的更下一步,找出
genericRandomErrorPlugin
物件。 請注意 屬性的值errorsFile
。
提示
當您啟動開發 Proxy 時,錯誤檔案的位置也會顯示在輸出中。
- 在 [開發 Proxy 安裝] 資料夾中,於文字編輯器中開啟
devproxy-errors.json
。 - 拿掉陣列中的所有
responses
回應專案,但回應除外429
。
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/genericrandomerrorplugin.schema.json",
"errors": [
{
"request": {
"url": "https://jsonplaceholder.typicode.com/*"
},
"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"
}
}
]
}
]
}
- 在命令行中,輸入 ,然後按 Enter
devproxy
以啟動開發 Proxy。 - 從命令行將要求傳送至 JSON 佔位元 API,並檢視輸出。
req ╭ GET https://jsonplaceholder.typicode.com/posts
oops ╰ 429 TooManyRequests
- 按 Ctrl + C 以安全地停止開發 Proxy。
後續步驟
瞭解如何使用Dev Proxy來模擬您自己的應用程式隨機錯誤。