模拟 CRUD API
生成应用时,通常会与后端 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/dev-proxy-plugins.dll",
"configSection": "customersApi"
}
{
"customersApi": {
"apiFile": "customers-api.json"
}
}
在 customers-api.json
文件中,定义模拟客户 API。
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/crudapiplugin.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。
示例
另请参阅相关的开发代理示例: