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


Имитация макетных ответов через Интернет

Использование прокси-сервера разработки — самый простой способ издеваться над API. Независимо от того, разрабатываете ли вы фронтенд, а API еще не готов, необходимо ли интегрировать вашу серверную часть с внешней службой или хотите протестировать приложение с использованием различных ответов, Dev Proxy может помочь имитировать ответы API. При интеграции API с облачными службами необходимо предоставить API через Интернет, чтобы облачная служба ей могли получить доступ. Для предоставления моделируемых ответов, смоделированных Dev Proxy через Интернет, используйте Dev Tunnels. В этой статье объясняется, как настроить макет ответов, которые будут предоставляться через Интернет с помощью Dev Tunnels.

Определение макетных ответов

Чтобы предоставить макетные ответы, имитированные прокси разработки через Интернет, начните с настройки макетов.

Это важно

На данный момент Dev Tunnels поддерживает только предоставление макетов HTTP-ответов по всему интернету.

Создание макетных ответов

Создайте файл с именем mocks.json , содержащий макет ответа для пользовательского API. Например, чтобы симулировать запрос GET к http://api.contoso.com/products, определите:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/mockresponseplugin.mocksfile.schema.json",
  "mocks": [
    {
      "request": {
        "url": "http://api.contoso.com/products",
        "method": "GET"
      },
      "response": {
        "headers": [
          {
            "name": "content-type",
            "value": "application/json"
          }
        ],
        "body": [
          {
            "id": 1,
            "name": "Contoso Coffee Beans",
            "price": 12.99
          },
          {
            "id": 2,
            "name": "Contoso Espresso Machine",
            "price": 249.99
          }
        ]
      }
    }
  ]
}

Кроме того, можно имитировать ошибки, двоичные ответы или условные ответы с помощью statusCode, nthили bodyFragment.

Настройка MockResponsePlugin

Создайте файл конфигурации прокси-сервера разработки с именем devproxyrc.json и включите следующую функцию MockResponsePlugin:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "MockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "mocksPlugin"
    }
  ],
  "urlsToWatch": [
    "http://api.contoso.com/*"
  ],
  "mocksPlugin": {
    "mocksFile": "mocks.json"
  }
}

Это важно

Чтобы сопоставить несколько конечных точек, используйте подстановочные знаки в urlsToWatch. Чтобы убедиться в правильном сопоставлении, сначала поместите более конкретные макеты в ваш mocks.json.

Проверка конфигурации

Убедитесь, что макеты работают правильно, запустив прокси-сервер разработки и отправив запросы в макет API.

Запустите прокси-сервер разработки, если вы сохранили конфигурацию прокси-сервера разработки в файле с именем devproxyrc.json в текущем рабочем каталоге:

devproxy

Проверьте макет, отправив запрос через Прокси разработки:

curl -x http://127.0.0.1:8000 http://api.contoso.com/products

Вы должны получить имитированный список продуктов, определенный в mocks.json.

Предоставление макетного API с помощью туннелей разработки

Чтобы предоставить макетные ответы через Интернет, запустите туннель разработки, сопоставленный с портом прокси-сервера разработки. Настройте туннель для использования имени узла, настроенного для макетированного API.

Предупреждение

Разрешение анонимного доступа к туннелю разработки означает, что любой пользователь в Интернете может подключиться к локальному серверу, если он может угадать идентификатор туннеля разработки.

devtunnel host -p 8000 -a --host-header api.contoso.com

Эта команда сопоставляет порт прокси-сервера разработки с общедоступным URL-адресом HTTP. Теперь вы можете получить доступ к API макета из любого места:

curl http://<your-tunnel-id>-8000.<region>.devtunnels.ms/products