開始使用開發 Proxy

開發人員 Proxy 是一種命令行工具,可協助您模擬雲端 API 的行為和錯誤,以協助您建置復原的應用程式。

在本教學課程中,您將瞭解如何安裝、執行及設定開發 Proxy。

如果您遇到任何困難,請毫不猶豫地通過提出 新問題 與我們連絡,我們很高興能協助您。

安裝開發 Proxy

安裝 Dev Proxy 最簡單的方式是使用 winget。 或者,您可以手動安裝Dev Proxy。

若要使用 winget 安裝 Dev Proxy,請執行下列命令:

winget install Microsoft.DevProxy --silent

重要

開發人員 Proxy 安裝程式會將新的專案新增至PATH。 若要在安裝之後使用 Dev Proxy,您必須重新啟動命令提示字元,以確保 PATH 環境變數已重新整理。

注意

若要嘗試最新的預覽功能,請安裝開發 Proxy 的 Beta 版本。

若要使用 winget 安裝 Dev Proxy,請執行下列命令:

winget install Microsoft.DevProxy.Beta --silent

若要執行開發 Proxy 的 Beta 版本 devproxy-beta

安裝Dev Proxy最簡單的方式是使用Homebrew。 或者,您可以手動安裝Dev Proxy。

若要使用 Homebrew 安裝 Dev Proxy,請執行下列命令:

brew tap microsoft/dev-proxy
brew install dev-proxy

注意

若要嘗試最新的預覽功能,請安裝開發 Proxy 的 Beta 版本。

若要使用 Homebrew 安裝 Dev Proxy,請執行下列命令:

brew tap microsoft/dev-proxy
brew install dev-proxy-beta

若要執行開發 Proxy 的 Beta 版本 devproxy-beta

安裝 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 的 Beta 版本。

若要使用安裝文稿安裝 Dev Proxy,請執行下列命令:

bash -c "$(curl -sL https://aka.ms/devproxy/setup-beta.sh)"

如果您使用 PowerShell,請執行下列命令:

(Invoke-WebRequest https://aka.ms/devproxy/setup-beta.ps1).Content | Invoke-Expression

若要執行開發 Proxy 的 Beta 版本 devproxy-beta

第一次啟動開發 Proxy

第一次在計算機上啟動 Dev Proxy 時,有一些步驟需要遵循,以確保開發 Proxy 可以攔截來自您機器的要求並成功回應。 您不需要在第一次執行之後重複這些步驟。

  1. 啟動開發 Proxy。 開啟命令提示字元會話。 輸入 devproxy,然後按 Enter
  2. 信任憑證。 開發 Proxy 會安裝名為的 Dev Proxy CA憑證。 顯示警告。 選取 Yes 以確認您要安裝憑證。 開發 Proxy 會使用此憑證來解密從您的電腦傳送的 HTTPS 流量。
  3. 允許防火牆存取。 Windows 防火牆會封鎖 Proxy。 顯示警告。 選取 Allow access 按鈕以允許流量通過防火牆。
  1. 啟動開發 Proxy。 開啟命令提示字元會話。 輸入 devproxy,然後按 Enter
  2. 信任憑證。 Dev Proxy 會安裝名為 Dev Proxy CA的憑證,其會用來解密從您的電腦傳送的 HTTPS 流量。 顯示警告。 按 y 確認您想要信任憑證。
  3. 接受連入連線。 顯示警告。 選取 Allow 以確認。
  1. 啟動開發 Proxy。 開啟命令提示字元會話。 輸入 devproxy,然後按 Enter

  2. 信任憑證。 開發 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    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 的要求。

  • 在命令提示字元中,執行 brew list dev-proxy 以找出安裝資料夾。
  • 在 Finder 中開啟 Dev Proxy 安裝資料夾。
  • 在 [開發 Proxy 安裝] 資料夾中,於文字編輯器中開啟 devproxyrc.json
  • 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 的每個要求都會傳回錯誤回應。

  • 在 [開發 Proxy 安裝] 資料夾中,於文字編輯器中開啟 devproxyrc.json
  • 找出 屬性, 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 行為,根據預設,我們會為您啟用兩個外掛程式。

讓我們變更設定,讓 Dev Proxy 一律傳 429 Too Many requests 回錯誤回應以模擬節流。

首先,讓我們找出包含錯誤定義的檔案位置。

  • 在 [開發 Proxy 安裝] 資料夾中,於文字編輯器中開啟 devproxyrc.json
  • 在陣列中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來模擬您自己的應用程式隨機錯誤。