使用开发代理是模拟 API 的最简单方法。 无论是构建前端和 API 尚未准备就绪,都需要将后端与外部服务集成,或者想要使用不同的响应测试应用程序,开发代理可帮助你模拟 API 响应。 将 API 与云服务集成时,需要通过 Internet 公开 API,以便云服务可以访问它。 若要在 Internet 中公开开发代理模拟的模拟响应,请使用开发隧道。 本文介绍如何使用 Dev Tunnel 将模拟响应配置为通过 Internet 公开。
定义模拟响应
若要通过互联网公开 Dev Proxy 模拟的模拟响应,请首先配置这些模拟。
重要
目前,开发隧道仅支持通过 Internet 公开 HTTP 模拟响应。
创建模拟响应
创建一个名为 mocks.json
包含自定义 API 的模拟响应的文件。 例如,若要模拟 GET
请求 http://api.contoso.com/products
,请定义:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/mockresponseplugin.mocksfile.schema.json",
"mocks": [
{
"request": {
"url": "http://api.contoso.com/products",
"method": "GET"
},
"response": {
"headers": [
{
"name": "content-type",
"value": "application/json"
}
],
"body": [
{
"id": 1,
"name": "Contoso Coffee Beans",
"price": 12.99
},
{
"id": 2,
"name": "Contoso Espresso Machine",
"price": 249.99
}
]
}
}
]
}
还可以使用statusCode
nth
bodyFragment
、或模拟错误、二进制响应或条件响应。
配置 MockResponsePlugin
创建开发代理配置文件,命名为devproxyrc.json
,并启用MockResponsePlugin
:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/rc.schema.json",
"plugins": [
{
"name": "MockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "mocksPlugin"
}
],
"urlsToWatch": [
"http://api.contoso.com/*"
],
"mocksPlugin": {
"mocksFile": "mocks.json"
}
}
重要
若要匹配多个终结点,请使用通配符。urlsToWatch
若要确保正确匹配,请先将更具体的模拟放在你的 mocks.json
。
验证配置
通过运行开发代理并将请求发送到模拟 API,验证模拟是否正常工作。
启动开发代理,假设你在当前工作目录中命名 devproxyrc.json
的文件中保存了开发代理配置:
devproxy
通过开发代理发送请求来测试模拟:
curl -x http://127.0.0.1:8000 http://api.contoso.com/products
你应收到 mocks.json
中定义的模拟产品列表。
通过开发隧道公开模拟 API
若要通过 Internet 公开模拟响应,请启动映射到开发代理端口的开发隧道。 配置隧道以使用为模拟 API 配置的主机名。
警告
允许匿名访问开发隧道意味着 Internet 上的任何人都可以连接到本地服务器(如果他们可以猜测开发隧道 ID)。
devtunnel host -p 8000 -a --host-header api.contoso.com
此命令将开发代理端口映射到公共 HTTP URL。 现在可以从任意位置访问模拟 API:
curl http://<your-tunnel-id>-8000.<region>.devtunnels.ms/products