开发代理入门

开发代理是一种命令行工具,可帮助你模拟云 API 的行为和错误,以帮助你生成可复原的应用。

本教程介绍如何安装、运行和配置开发代理。

如果遇到任何困难,请随时通过提出 新问题 与我们联系,我们很乐意为你提供帮助。

安装开发代理

安装开发代理的最简单方法是使用 winget。 或者,可以手动安装开发代理。

若要使用 winget 安装开发代理,请运行以下命令:

winget install Microsoft.DevProxy --silent

重要

开发代理安装程序将新条目添加到 PATH。 若要在安装后使用开发代理,必须重启命令提示符以确保 PATH 环境变量已刷新。

注意

若要尝试最新的预览功能,请安装开发代理的 beta 版本。

若要使用 winget 安装开发代理,请运行以下命令:

winget install Microsoft.DevProxy.Beta --silent

若要运行开发代理的 beta 版本,请使用 devproxy-beta

安装开发代理的最简单方法是使用 Homebrew。 或者,可以手动安装开发代理。

若要使用 Homebrew 安装开发代理,请运行以下命令:

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

注意

若要尝试最新的预览功能,请安装开发代理的 beta 版本。

若要使用 Homebrew 安装开发代理,请运行以下命令:

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

若要运行开发代理的 beta 版本,请使用 devproxy-beta

首次启动开发代理

首次在计算机上启动开发代理时,需要遵循几个步骤来确保开发代理可以截获来自计算机的请求并成功做出响应。 首次运行后,无需重复这些步骤。

  1. 启动开发代理。 打开命令提示符会话。 输入 devproxy,然后按 Enter
  2. 信任证书。 开发代理安装名为 的 Dev Proxy CA证书。 将显示一条警告。 选择 Yes 以确认要安装证书。 开发代理使用此证书来解密从计算机发送的 HTTPS 流量。
  3. 允许防火墙访问。 Windows 防火墙阻止代理。 将显示一条警告。 选择 Allow access 按钮以允许流量通过防火墙。
  1. 启动开发代理。 打开命令提示符会话。 输入 devproxy,然后按 Enter
  2. 信任证书。 开发代理安装名为 的 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

默认情况下,开发代理配置为:

  • 截获对任何 JSON 占位符 API 终结点发出的请求
  • 模拟失败率为 50% 的 API 错误响应和 API 限制

截获请求

开发代理将截获计算机上任何应用程序对已知 URL 发出的请求。 检测到请求时,开发代理会将请求传递到 API, (不执行任何操作) 或返回响应。

  • 从命令行向 JSON 占位符 API 发送请求,并切换回代理进程以查看输出。

在 PowerShell 中 Invoke-WebRequest ,使用 cmdlet 将 GET 请求发送到 JSON 占位符 API。

Invoke-WebRequest -Uri https://jsonplaceholder.typicode.com/posts

如果使用 curl,请使用以下命令向 JSON 占位符 API 发送 GET 请求。

curl -ix http://localhost:8000 https://jsonplaceholder.typicode.com/posts

还可以使用 Postman 等 API 客户端向 发送 GET 请求 https://jsonplaceholder.typicode.com/posts

将显示一个条目,其中包含有关传入请求和 Dev 代理执行的操作的一些基本信息。 开发代理模拟错误响应的几率为 50%。 如果请求未返回错误,则开发代理会传递该错误。

 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

当开发代理返回错误响应时,条目中会显示一个 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

安全停止开发代理

不再需要运行开发代理时,应始终安全停止它。

  • Ctrl + C 安全地停止开发代理。

如果关闭命令提示符会话,则开发代理不会正确注销为系统代理,并且可能会遇到一些 常见问题

更新 URL 以watch

默认情况下,开发代理配置为截获对 JSON 占位符 API 发出的任何请求。 可以将开发代理配置为截获对任何 HTTP API 的请求。

  • 在命令提示符下,运行 brew list dev-proxy 以查找安装文件夹。
  • 在 Finder 中打开 Dev Proxy 安装文件夹。
  • 在“开发代理”安装文件夹中,在文本编辑器中打开 devproxyrc.json
  • urlsToWatch找到数组。
"urlsToWatch": [
  "https://jsonplaceholder.typicode.com/*"
],

数组 urlsToWatch 表示已知的 URL。 开发代理监视从当前条目到任何终结点的请求。 条目使用 URL 后的星号作为通配符。 向此数组中添加更多条目会扩展开发代理监视的 URL。

假设你不希望开发代理截获对特定终结点发出的请求。

  • 向数组添加新条目 urlsToWatch
"urlsToWatch": [
  "!https://jsonplaceholder.typicode.com/posts/2",
  "https://jsonplaceholder.typicode.com/*"
],

URL 开头的感叹号告知开发代理忽略与该 URL 匹配的任何请求。 可以在 URL 中混合和匹配感叹号和星号。

  • 在命令行中,输入 devproxy 并按 Enter 启动开发代理。
  • 从命令行将 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

URL 在数组中的 urlsToWatch 列出顺序非常重要。 开发代理按顺序处理这些 URL。 当 URL 匹配时,不会再次处理它。 因此,首先放置 URL 可确保在处理下一个 URL 之前忽略请求。

更改失败率

默认情况下,开发代理配置为使正在监视的 URL 有 50% 的几率失败请求。 可以增加或降低请求返回错误响应的可能性。

让我们更新失败率,以便对 JSON 占位符 API 的每个请求都返回错误响应。

  • 在“开发代理”安装文件夹中,在文本编辑器中打开 devproxyrc.json
  • 找到 rate 属性,将值从 50 更新为 100

该文件 devproxyrc.json 包含启动开发代理时使用的配置设置。 更改配置设置时,应始终停止并启动开发代理,以便保留更改。

  • 在命令行中,输入 devproxy 并按 Enter 启动开发代理。
  • 从命令行将请求发送到 JSON 占位符 API 并查看输出。

或者,可以在运行时通过启动开发代理时使用 --failure-rate 选项来替代配置设置。

devproxy --failure-rate 100
  • Ctrl + C 安全地停止开发代理。

模拟限制

默认情况下,开发代理返回一系列泛型 400 和 500 错误响应。 可以根据自己的需求自定义这些错误响应。

开发代理使用 插件 来启用不同的 API 行为,默认情况下,我们为你启用两个插件。

让我们更改配置,使开发代理始终返回 429 Too Many requests 错误响应以模拟限制。

首先,让我们找到包含错误定义的文件的位置。

  • 在“开发代理”安装文件夹中,在文本编辑器中打开 devproxyrc.json
  • 在 数组中 plugins ,找到 GenericRandomErrorPlugin 插件的条目。 请注意 属性的值 configSection
  • 在文件下,找到 genericRandomErrorPlugin 对象。 请注意 属性的值 errorsFile

提示

启动开发代理时,错误文件的位置也会显示在输出中。

  • 在“开发代理”安装文件夹中,在文本编辑器中打开 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 启动开发代理。
  • 从命令行将请求发送到 JSON 占位符 API 并查看输出。
 request     GET https://jsonplaceholder.typicode.com/posts
   chaos   ╭ 429 TooManyRequests
           ╰ GET https://jsonplaceholder.typicode.com/posts
  • Ctrl + C 安全地停止开发代理。

后续步骤

了解如何使用开发代理为自己的应用程序模拟随机错误。