Имитация API CRUD
При создании приложений часто взаимодействуют с внутренними API. Иногда эти API еще недоступны или другие команды обновляют их в соответствии с последними требованиями. Чтобы избежать ожидания, обычно создается макет API, который возвращает необходимые данные. Хотя этот подход разблокирует вас, это требует времени для создания API, который вы в конечном итоге заменяете реальным. Чтобы избежать тратить время, можно использовать прокси разработки для имитации API CRUD и ускорения разработки.
CrudApiPlugin
С помощью api CRUD (создание, чтение, обновление, удаление) можно имитировать с помощью хранилища данных в памяти. С помощью простого файла конфигурации можно определить URL-адреса, поддерживаемые API макета и возвращаемые им данные. Подключаемый модуль также поддерживает CORS для использования между доменами из клиентских приложений.
MockResponsePlugin
Где можно определить статические ответы макета, можно определить динамический API макета, CrudApiPlugin
который можно использовать для взаимодействия с данными и увидеть изменения, отраженные в наборе данных макета.
Сценарий
Предположим, вы создаете приложение, которое позволяет пользователям управлять клиентами. Чтобы получить данные, необходимо вызвать /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
определяется базовый URL-адрес api макета. В свойстве dataFile
определяется файл, содержащий макет данных клиента. В свойстве actions
определяются поддерживаемые действия и их сопоставление с методами и URL-адресами HTTP. Вы хотите использовать 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-адреса. Подключаемый модуль также использует {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.
Примеры
См. также связанные примеры прокси-сервера разработки: