开发代理入门
开发代理是一种命令行工具,可帮助你模拟云 API 的行为和错误,以帮助构建可复原的应用。
本教程介绍如何安装、运行和配置开发代理。
如果你确实遇到任何困难,请毫不犹豫地通过提出一个新 问题 与我们联系,我们很高兴能帮助你解决。
安装开发代理
安装开发代理的最简单方法是使用 winget。 或者,可以手动安装开发代理。
若要使用 winget 安装开发代理,请运行以下命令:
winget install Microsoft.DevProxy --silent
重要
开发代理安装程序向 PATH 添加新条目。 若要在安装后使用开发代理,必须重启命令提示符,以确保 PATH 环境变量已刷新。
安装开发代理的最简单方法是使用 Homebrew。 或者,可以手动安装开发代理。
安装开发代理的最简单方法是使用安装脚本。 或者,可以手动安装开发代理。
若要使用安装脚本安装开发代理,请运行以下命令:
bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"
如果使用 PowerShell,请运行以下命令:
(Invoke-WebRequest https://aka.ms/devproxy/setup.ps1).Content | Invoke-Expression
首次启动开发代理
首次在计算机上启动开发代理时,需要执行几个步骤,以确保开发代理可以截获来自计算机的请求并成功响应。 首次运行后无需重复这些步骤。
- 启动开发代理。 打开命令提示符会话。 输入
devproxy
,然后按 Enter。 - 信任证书。 开发代理安装名为
Dev Proxy CA
.. 显示警告。 选择Yes
以确认要安装证书。 开发代理使用此证书解密从计算机发送的 HTTPS 流量。 - 允许防火墙访问。 Windows 防火墙阻止代理。 显示警告。 选择
Allow access
按钮以允许流量通过防火墙。
- 启动开发代理。 打开命令提示符会话。 输入
devproxy
,然后按 Enter。 - 信任证书。 开发代理会安装一个名为
Dev Proxy CA
的证书,该证书用于解密从计算机发送的 HTTPS 流量。 显示警告。 按 y 确认要信任证书。 - 接受传入连接。 显示警告。 选择
Allow
进行确认。
启动开发代理。 打开命令提示符会话。 输入
devproxy
,然后按 Enter。信任证书。 开发代理使用自定义 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
默认情况下,开发代理配置为:
- 截获对任何 JSON 占位符 API 终结点发出的请求
- 模拟 API 错误响应和 API 限制,失败率为 50%
截获请求
开发代理将截获来自计算机上的任何应用程序的已知 URL 的请求。 检测到请求时,开发代理会将请求传递到 API(不采取任何操作),或返回响应。
- 从命令行向 JSON 占位符 API 发送请求,并切换回代理进程以查看输出。
在 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
。
将显示一个条目,其中包含有关传入请求和开发代理执行的操作的一些基本信息。 开发代理模拟错误响应的可能性为 50%。 如果请求未返回错误,则开发人员代理会传递它。
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
当开发代理返回错误响应时, 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
默认情况下,开发代理配置为截获对 JSON 占位符 API 发出的任何请求。 可以将开发代理配置为截获对任何 HTTP API 的请求。
- 在命令提示符下,运行
brew list dev-proxy
以找到安装文件夹。 - 在 Finder 中打开开发代理安装文件夹。
- 在开发代理安装文件夹中,在文本编辑器中打开
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
并查看输出。
当忽略的 URL 与请求匹配时,开发代理不会处理请求,因此不会显示任何输出。
数组中 urlsToWatch
列出 URL 的顺序很重要。 开发代理按顺序处理这些 URL。 URL 匹配时,不会再次处理它。 因此,首先放置 URL 可确保在处理下一个 URL 之前忽略请求。
更改失败率
默认情况下,开发代理配置为失败请求,其中 50% 的 URL 被监视。 可以增加或减少返回错误响应的请求的可能性。
让我们更新失败率,以便对 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.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"
}
}
]
}
]
}
- 在命令行中,输入
devproxy
并按 Enter 启动开发代理。 - 从命令行向 JSON 占位符 API 发送请求并查看输出。
req ╭ GET https://jsonplaceholder.typicode.com/posts
oops ╰ 429 TooManyRequests
- 按 Ctrl + C 安全地停止开发代理。
下一步
了解如何使用开发代理来模拟你自己的应用程序的随机错误。