Поделиться через


Имитация 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.

Примеры

См. также связанные примеры прокси-сервера разработки: