概览
目标: 创建具有完整 CRUD 操作的动态的模拟 API
时间: 15 分钟
Plugins:CrudApiPlugin
先决条件:设置开发代理
生成应用时,通常会与后端 API 进行交互。 有时,这些 API 尚不可用,或者其他团队正在更新它们以满足最新要求。 为了避免等待,通常会创建一个返回所需数据的模拟 API。 虽然此方法会取消阻止你,但它要求你花时间生成最终替换为实际 API。 为了避免浪费时间,可以使用开发代理模拟 CRUD API 并加快开发速度。
CrudApiPlugin使用 ,可以使用内存中数据存储模拟 CRUD (创建、读取、更新、删除)API。 使用简单的配置文件,可以定义模拟 API 支持的 URL 及其返回的数据。 该插件还支持 CORS,以便从客户端应用程序使用跨域。
在允许你定义静态模拟响应的位置 MockResponsePlugin ,可以定义一个动态模拟 API, CrudApiPlugin 该 API 可用于与数据交互,并查看模拟数据集中反映的更改。
场景
假设你正在构建一个应用,允许用户管理客户。 若要获取数据,需要调用 /customers 后端 API 的终结点。 为了避免等待后端团队完成其工作,你决定使用开发代理来模拟 API 并返回所需的数据。
首先启用 CrudApiPlugin 并配置它以使用 customers-api.json 该文件。
文件:devproxyrc.json (插件实例)
{
"name": "CrudApiPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "customersApi"
}
文件:devproxyrc.json (配置部分)
{
"customersApi": {
"apiFile": "customers-api.json"
}
}
在 customers-api.json 文件中,定义模拟客户 API。
文件: customers-api.json
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/crudapiplugin.apifile.schema.json",
"baseUrl": "https://api.contoso.com/v1/customers",
"dataFile": "customers-data.json",
"actions": [
{
"action": "getAll"
},
{
"action": "getOne",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "create"
},
{
"action": "merge",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
},
{
"action": "delete",
"url": "/{customer-id}",
"query": "$.[?(@.id == {customer-id})]"
}
]
}
在 baseUrl 属性中,定义模拟 API 的基 URL。 在 dataFile 属性中,定义包含模拟客户数据的文件。 在 actions 属性中,定义支持的操作及其映射到 HTTP 方法和 URL 的方式。 你想要使用 API 来:
- 通过呼叫获取所有客户
GET /v1/customers - 通过呼叫获取单个客户
GET /v1/customers/{customer-id} - 通过呼叫
POST /v1/customers添加新客户, - 通过呼叫
PATCH /v1/customers/{customer-id}更新客户 - 通过呼叫删除客户
DELETE /v1/customers/{customer-id}
在 URL 中,使用 {customer-id} 插件替换为 URL 中实际客户 ID 的参数。 该插件还使用 {customer-id} JSONPath 查询中的参数在数据文件中查找客户。
在 customers-data.json 文件中,定义模拟客户数据。
文件:customers-data.json
[
{
"id": 1,
"name": "Contoso",
"address": "4567 Main St Buffalo, NY 98052"
},
{
"id": 2,
"name": "Fabrikam",
"address": "4567 Main St Buffalo, NY 98052"
}
]
启动开发代理并调用 https://api.contoso.com/v1/customers 终结点。 开发代理截获请求并返回模拟客户数据。
[
{
"id": 1,
"name": "Contoso",
"address": "4567 Main St Buffalo, NY 98052"
},
{
"id": 2,
"name": "Fabrikam",
"address": "4567 Main St Buffalo, NY 98052"
}
]
下一步
详细了解 CrudApiPlugin。
示例
另请参阅相关的开发代理示例:
另请参阅
- 模拟响应 - 返回静态模拟响应
- 通过互联网模拟 CRUD API——公开您的模拟 API
- 模拟使用 Microsoft Entra 保护的 CRUD API - 添加身份验证
- 术语表 - 开发代理术语