生成应用时,通常会与后端 API 进行交互。 有时,这些 API 尚不可用,或者其他团队正在更新它们以满足最新要求。 为了避免等待,通常会创建一个返回所需数据的模拟 API。 虽然此方法会取消阻止你,但它要求你花时间生成最终替换为实际 API。 为了避免浪费时间,可以使用开发代理模拟 CRUD API 并加快开发速度。
CrudApiPlugin使用 ,可以使用内存中数据存储模拟 CRUD (创建、读取、更新、删除)API。 使用简单的配置文件,可以定义模拟 API 支持的 URL 及其返回的数据。 该插件还支持 CORS,以便从客户端应用程序使用跨域。
在允许你定义静态模拟响应的位置 MockResponsePlugin ,可以定义一个动态模拟 API, CrudApiPlugin 该 API 可用于与数据交互,并查看模拟数据集中反映的更改。
场景
假设你正在构建一个应用,允许用户管理客户。 若要获取数据,需要调用 /customers 后端 API 的终结点。 为了避免等待后端团队完成其工作,你决定使用开发代理来模拟 API 并返回所需的数据。
首先启用 CrudApiPlugin 并配置它以使用 customers-api.json 该文件。
{
"name": "CrudApiPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
"configSection": "customersApi"
}
{
"customersApi": {
"apiFile": "customers-api.json"
}
}
在 customers-api.json 文件中,定义模拟客户 API。
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.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 文件中,定义模拟客户数据。
[
{
"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。
示例
另请参阅相关的开发代理示例: