Начало работы с прокси-сервером разработки

Dev Proxy — это программа командной строки, которая помогает имитировать поведение и ошибки облачных API для создания устойчивых приложений.

В этом руководстве описано, как установить, запустить и настроить прокси-сервер разработки.

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

Установка прокси-сервера разработки

Проще всего установить Dev Proxy с помощью winget. Кроме того, прокси-сервер разработки можно установить вручную.

Чтобы установить Dev Proxy с помощью winget, выполните следующую команду:

winget install Microsoft.DevProxy --silent

Важно!

Установщик Прокси-сервера разработки добавляет новую запись в PATH. Чтобы использовать прокси-сервер разработки после установки, необходимо перезапустить командную строку, чтобы убедиться, что переменные среды PATH обновлены.

Примечание

Чтобы опробовать последние предварительные версии функций, установите бета-версию Прокси-сервера разработки.

Чтобы установить Dev Proxy с помощью winget, выполните следующую команду:

winget install Microsoft.DevProxy.Beta --silent

Чтобы запустить бета-версию dev Proxy, используйте devproxy-beta

Самый простой способ установить Dev Proxy — использовать Homebrew. Кроме того, прокси-сервер разработки можно установить вручную.

Чтобы установить Dev Proxy с помощью Homebrew, выполните следующие команды:

brew tap microsoft/dev-proxy
brew install dev-proxy

Примечание

Чтобы опробовать последние предварительные версии функций, установите бета-версию Прокси-сервера разработки.

Чтобы установить Dev Proxy с помощью Homebrew, выполните следующие команды:

brew tap microsoft/dev-proxy
brew install dev-proxy-beta

Чтобы запустить бета-версию dev Proxy, используйте devproxy-beta

Запуск прокси-сервера разработки в первый раз

При первом запуске прокси-сервера разработки на компьютере необходимо выполнить несколько действий, чтобы прокси-сервер разработчика перехватывая запросы с вашего компьютера и успешно отвечая на них. Повторять эти действия после первого запуска не придется.

  1. Запустите прокси-сервер разработки. Откройте сеанс командной строки. Введите devproxy и нажмите клавишу ВВОД.
  2. Сертификат доверия. Прокси-сервер разработки устанавливает сертификат с именем Dev Proxy CA. Отображается предупреждение. Выберите Yes , чтобы подтвердить установку сертификата. Прокси-сервер разработчика использует этот сертификат для расшифровки трафика HTTPS, отправляемого с компьютера.
  3. Разрешить доступ к брандмауэру. Брандмауэр Windows блокирует прокси-сервер. Отображается предупреждение. Нажмите Allow access кнопку, чтобы разрешить трафик через брандмауэр.
  1. Запустите прокси-сервер разработки. Откройте сеанс командной строки. Введите devproxy и нажмите клавишу ВВОД.
  2. Сертификат доверия. Сервер Dev Proxy устанавливает сертификат с именем Dev Proxy CA, который используется для расшифровки трафика HTTPS, отправленного с компьютера. Отображается предупреждение. Нажмите y , чтобы подтвердить, что вы хотите доверять сертификату.
  3. Примите входящие подключения. Отображается предупреждение. Выберите Allow для подтверждения.

В командной строке отображаются следующие выходные данные:

8 error responses loaded from devproxy-errors.json
Listening on 127.0.0.1:8000...
Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy

По умолчанию прокси-сервер разработчика настроен для:

  • Перехват запросов к любой конечной точке API заполнителя JSON
  • Имитация ответов на ошибки API и регулирование API с частотой сбоев 50 %

Перехват запросов

Прокси-сервер разработки перехватывает запросы на известные URL-адреса из любого приложения на вашем компьютере. При обнаружении запроса прокси-сервер разработчика передает запрос в API (не выполняет никаких действий) или возвращает ответ.

  • Отправьте запрос в API заполнителя JSON из командной строки и переключитесь обратно на прокси-процесс, чтобы просмотреть выходные данные.

В PowerShell используйте Invoke-WebRequest командлет для отправки запроса GET в API заполнителя JSON.

Invoke-WebRequest -Uri https://jsonplaceholder.typicode.com/posts

Если вы используете curl, отправьте запрос GET в API заполнителя JSON с помощью следующей команды.

curl -ix http://localhost:8000 https://jsonplaceholder.typicode.com/posts

Вы также можете использовать клиент API, например Postman , для отправки запроса GET в https://jsonplaceholder.typicode.com/posts.

Отображается запись с некоторыми основными сведениями о входящем запросе и действии, выполненном прокси-сервером разработки. Dev Proxy имитирует ответ на ошибку с вероятностью 50 %. Если запрос не возвращает ошибку, прокси-сервер разработчика передает его.

 request     GET https://jsonplaceholder.typicode.com/posts
     api   ╭ Passed through
           ╰ GET https://jsonplaceholder.typicode.com/posts
  • Повторяйте отправку запросов в API заполнителя JSON из командной строки, пока не будет возвращен ответ об ошибке.
 request     GET https://jsonplaceholder.typicode.com/posts
     api   ╭ Passed through
           ╰ GET https://jsonplaceholder.typicode.com/posts
 request     GET https://jsonplaceholder.typicode.com/posts
   chaos   ╭ 403 Forbidden
           ╰ GET https://jsonplaceholder.typicode.com/posts

Когда Dev Proxy возвращает ответ об ошибке chaos , в записи отображается метка.

  • Попробуйте отправить запросы в другие конечные точки, доступные в API заполнителя JSON
    • https://jsonplaceholder.typicode.com/posts
    • https://jsonplaceholder.typicode.com/posts/1
    • https://jsonplaceholder.typicode.com/posts/1/comments
    • https://jsonplaceholder.typicode.com/comments?postId=1

Безопасная остановка прокси-сервера разработки

Если прокси-сервер разработки больше не требуется, его всегда следует останавливать безопасно.

  • Нажмите клавиши CTRL + C , чтобы безопасно остановить прокси-сервер разработки.

Если вы завершите сеанс командной строки, прокси-сервер разработчика не отменит регистрацию в качестве системного прокси-сервера, и у вас могут возникнуть некоторые распространенные проблемы.

Измените URL-адреса на watch

По умолчанию прокси-сервер разработчика настроен для перехвата любых запросов, сделанных в API заполнителя JSON. Прокси-сервер разработки можно настроить для перехвата запросов к любому API HTTP.

  • В командной строке выполните команду brew list dev-proxy , чтобы найти папку установки.
  • Откройте папку установки Dev Proxy в Finder.
  • В папке установки Dev Proxy откройте devproxyrc.json в текстовом редакторе.
  • urlsToWatch Найдите массив.
"urlsToWatch": [
  "https://jsonplaceholder.typicode.com/*"
],

Массив urlsToWatch представляет известные URL-адреса. Dev Proxy наблюдает за запросами из текущей записи к любой конечной точке. Запись использует звездочку после URL-адреса в качестве подстановочного знака. Добавление дополнительных записей в этот массив расширяет URL-адреса, за которыми следит прокси-сервер разработчика.

Давайте рассмотрим, что вы не хотите, чтобы прокси-сервер разработчика перехватывал запросы, сделанные к определенной конечной точке.

  • Добавьте новую запись в urlsToWatch массив.
"urlsToWatch": [
  "!https://jsonplaceholder.typicode.com/posts/2",
  "https://jsonplaceholder.typicode.com/*"
],

Восклицательный знак в начале URL-адреса указывает, что прокси-сервер разработчика игнорирует все запросы, соответствующие указанному URL-адресу. В URL-адресе можно сочетать восклицательные знаки и звездочки.

  • В командной строке введите devproxy и нажмите клавишу ВВОД , чтобы запустить dev Proxy.
  • Отправьте запрос из https://jsonplaceholder.typicode.com/posts/2 командной строки и просмотрите выходные данные.

Отображается запись, подтверждающая, что запрос был проигнорирован и передан в API.

request     GET https://jsonplaceholder.typicode.com/posts/2
     api   ╭ Passed through
           ╰ GET https://jsonplaceholder.typicode.com/posts/2

Важен порядок перечисления URL-адресов в массиве urlsToWatch . Прокси-сервер разработчика обрабатывает эти URL-адреса по порядку. Если URL-адрес совпадает, он больше не обрабатывается. Таким образом, размещение URL-адреса первым гарантирует, что запрос будет проигнорирован перед обработкой следующего URL-адреса.

Коэффициент сбоев при изменениях

По умолчанию сервер Dev Proxy настроен на сбой запросов с вероятностью 50 % для отслеживаемых URL-адресов. Вы можете увеличить или уменьшить вероятность того, что запрос возвращает ответ на ошибку.

Давайте обновим частоту сбоев, чтобы каждый запрос к API заполнителя JSON возвращал ответ об ошибке.

  • В папке установки Dev Proxy откройте devproxyrc.json в текстовом редакторе.
  • Найдите свойство rate и обновите значение с 50 на 100.

Файл devproxyrc.json содержит параметры конфигурации, которые используются при запуске прокси-сервера разработки. При изменении параметров конфигурации всегда следует останавливаться и запускать прокси-сервер разработки, чтобы сохранить изменения.

  • В командной строке введите devproxy и нажмите клавишу ВВОД , чтобы запустить dev Proxy.
  • Отправьте запрос в API заполнителя JSON из командной строки и просмотрите выходные данные.

Кроме того, можно переопределить параметры конфигурации во время выполнения с помощью --failure-rate параметра при запуске прокси-сервера разработки.

devproxy --failure-rate 100
  • Нажмите клавиши CTRL + C , чтобы безопасно остановить прокси-сервер разработки.

Имитация регулирования

По умолчанию прокси-сервер разработчика возвращает диапазон универсальных ответов на ошибки 400 и 500. Эти ответы на ошибки можно настроить в соответствии с собственными потребностями.

Dev Proxy использует подключаемые модули для различных поведений API. По умолчанию мы включаем два подключаемых модуля.

  • Подключаемый модуль GenericRandomErrorPlugin предоставляет прокси-серверу разработчика возможность отвечать на сообщение об ошибке.
  • Подключаемый модуль RetryAfterPlugin предоставляет прокси-серверу разработчика возможность вставки динамического значения в заголовок Retry-After в ответе на ошибку.

Давайте изменим конфигурацию, чтобы прокси-сервер разработчика всегда возвращал ответ на 429 Too Many requests ошибку для имитации регулирования.

Сначала найдем расположение файла, содержащего определения ошибок.

  • В папке установки Dev Proxy откройте devproxyrc.json в текстовом редакторе.
  • В массиве найдите plugins запись для подключаемого модуля GenericRandomErrorPlugin . Обратите внимание на значение configSection свойства .
  • Далее вниз по файлу найдите genericRandomErrorPlugin объект . Обратите внимание на значение errorsFile свойства .

Совет

Расположение файла ошибок также отображается в выходных данных при запуске прокси-сервера разработки.

  • В папке установки Dev Proxy откройте devproxy-errors.json в текстовом редакторе.
  • Удалите все записи ответа в массиве responses , за 429 исключением ответа.
{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.14.1/genericrandomerrorplugin.schema.json",
  "responses": [
    {
      "statusCode": 429,
      "body": {
        "message": "Too Many Requests",
        "details": "The user has sent too many requests in a given amount of time (\"rate limiting\")."
      },
      "headers": {
        "Retry-After": "@dynamic"
      }
    }
  ]
}
  • В командной строке введите devproxy и нажмите клавишу ВВОД , чтобы запустить dev Proxy.
  • Отправьте запрос в API заполнителя JSON из командной строки и просмотрите выходные данные.
 request     GET https://jsonplaceholder.typicode.com/posts
   chaos   ╭ 429 TooManyRequests
           ╰ GET https://jsonplaceholder.typicode.com/posts
  • Нажмите клавиши CTRL + C , чтобы безопасно остановить прокси-сервер разработки.

Следующий шаг

Узнайте, как использовать Dev Proxy для имитации случайных ошибок для собственного приложения.