开发代理入门
开发代理是一种命令行工具,可帮助你模拟云 API 的行为和错误,以帮助你生成可复原的应用。
本教程介绍如何安装、运行和配置开发代理。
如果遇到任何困难,请随时通过提出 新问题 与我们联系,我们很乐意为你提供帮助。
安装开发代理
安装开发代理的最简单方法是使用 winget。 或者,可以手动安装开发代理。
若要使用 winget 安装开发代理,请运行以下命令:
winget install Microsoft.DevProxy --silent
重要
开发代理安装程序将新条目添加到 PATH。 若要在安装后使用开发代理,必须重启命令提示符以确保 PATH 环境变量已刷新。
安装开发代理的最简单方法是使用 Homebrew。 或者,可以手动安装开发代理。
首次启动开发代理
首次在计算机上启动开发代理时,需要遵循几个步骤来确保开发代理可以截获来自计算机的请求并成功做出响应。 首次运行后,无需重复这些步骤。
- 启动开发代理。 打开命令提示符会话。 输入
devproxy
,然后按 Enter。 - 信任证书。 开发代理安装名为 的
Dev Proxy CA
证书。 将显示一条警告。 选择Yes
以确认要安装证书。 开发代理使用此证书来解密从计算机发送的 HTTPS 流量。 - 允许防火墙访问。 Windows 防火墙阻止代理。 将显示一条警告。 选择
Allow access
按钮以允许流量通过防火墙。
- 启动开发代理。 打开命令提示符会话。 输入
devproxy
,然后按 Enter。 - 信任证书。 开发代理安装名为 的
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
默认情况下,开发代理配置为:
- 截获对任何 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 行为,默认情况下,我们为你启用两个插件。
- GenericRandomErrorPlugin 插件使开发代理能够响应错误响应。
- RetryAfterPlugin 插件使开发代理能够将动态值注入错误响应中的 Retry-After 标头。
让我们更改配置,使开发代理始终返回 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 安全地停止开发代理。
后续步骤
了解如何使用开发代理为自己的应用程序模拟随机错误。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈