開始使用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 環境變數已重新整理。

注意

若要嘗試最新的預覽功能,請安裝開發 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

第一次啟動開發 Proxy

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

  1. 啟動Dev Proxy。 開啟命令提示字元會話。 輸入 devproxy,然後按 Enter
  2. 信任憑證。 Dev Proxy 會安裝名為 的 Dev Proxy CA憑證。 顯示警告。 選取 Yes 以確認您想要安裝憑證。 Dev Proxy 會使用此憑證來解密從您的電腦傳送的 HTTPS 流量。
  3. 允許防火牆存取。 Windows 防火牆會封鎖 Proxy。 顯示警告。 選取 Allow access 按鈕以允許流量通過防火牆。
  1. 啟動Dev Proxy。 開啟命令提示字元會話。 輸入 devproxy,然後按 Enter
  2. 信任憑證。 Dev Proxy 會安裝名為 的 Dev Proxy CA憑證,它會用來解密從您的電腦傳送的 HTTPS 流量。 顯示警告。 按 y 以確認您想要信任憑證。
  3. 接受連入連線。 顯示警告。 選取 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 行為,根據預設,我們會為您啟用兩個外掛程式。

讓我們變更設定,讓 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來模擬您自己的應用程式隨機錯誤。