Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
На первый взгляд
Цель: Проверка запросов API облачной службы локально
Время: 20 минут
Подключаемые модули:RewritePlugin, DevToolsPlugin
Необходимые условия:настройка прокси-сервера разработки, туннелей разработки
При интеграции приложения с облачными службами одна из проблем, с которыми вы можете столкнуться, заключается в том, как облачная служба взаимодействует с API, которые он использует. Возможность проверки запросов API особенно важна при устранении неполадок или при попытке понять, как работает облачная служба. Как правило, это сложно, так как у вас нет доступа к среде выполнения облачной службы, и у вас также может не быть доступа к средствам мониторинга для облачного API. Используя прокси-сервер разработки и туннель разработки, вы можете проверить запросы API, которые облачные службы выдают облачным API.
Внимание
Прежде чем продолжить, установите туннель разработки и настройте средство для использования.
Как облачные службы вызывают облачные API
При интеграции приложения с облачными службами облачная служба вызывает API в облаке. Этот сценарий представлен на схеме ниже.
Чтобы проверить запросы API, связанные с проблемами облачной службы, необходимо получить доступ к средствам мониторинга для облачного API. Часто у вас нет доступа к этим средствам. Это ограничение можно обойти, используя промежуточную среду. Однако для настройки и поддержания промежуточной среды требуется много времени. Кроме того, если вы не владеете облачным API, возможно, вы не сможете настроить промежуточную среду вообще.
Проверка запросов API с помощью прокси для разработки и туннелей для разработки
Используя Dev Proxy и туннели разработки, вы можете просматривать запросы API, которые облачная служба отправляет облачному API.
Вместо прямого вызова облачного API вы настраиваете облачную службу для вызова туннеля разработки, выполняемого на локальном компьютере (1). Вы настраиваете туннель разработки для использования хост-заголовка, перехватываемого Dev Proxy. Каждый раз, когда облачная служба вызывает туннель разработки, он передает запрос в прокси разработки, который перехватывает его (2). Используя Dev Proxy RewritePlugin, вы изменяете URL-адрес перехватываемого запроса и перенаправляете его в облачный API (3). Облачный API обрабатывает запрос и возвращает ответ Dev Proxy (4). Прокси-сервер разработки передает ответ на туннель разработки (5), который перенаправляет его в облачную службу (6). Так как запрос направляется через локальный компьютер, его можно проверить, включая URL-адрес, заголовки и текст, а также ответ из облачного API.
Сценарий
Предположим, вы хотите проверить API-запросы, которые облачный сервис отправляет в демонстрационный API JSONPlaceholder, расположенный по адресу https://jsonplaceholder.typicode.com. Объединяя Dev Proxy и dev туннели, вы можете перехватывать запросы и анализировать их информацию.
Запросы можно проверить с помощью инспекционных инструментов для туннелей разработки или с помощью DevToolsPlugin Dev Proxy. Оба инструмента используют Chrome DevTools для отображения информации о перехваченных запросах и ответах. При использовании инструментов инспекции туннелей разработки вы увидите URL-адрес туннеля разработки в качестве URL-адреса запроса. В сравнении с этим, если вы используете Dev Proxy DevToolsPlugin, вы увидите, как прокси-сервер разработки перехватывает запрос, используя локальный или изменённый URL-адрес.
Проверка запросов API с помощью Dev Proxy, инструментов для разработки туннелей и инструментов для их проверки
Настройте прокси для разработки для перехвата запросов к
https://jsonplaceholder.typicode.comиhttp://jsonplaceholder.typicode.local:Файл: devproxyrc.json
{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json", "plugins": [ { "name": "RewritePlugin", "enabled": true, "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll", "configSection": "rewritePlugin" } ], "urlsToWatch": [ "https://jsonplaceholder.typicode.com/*", "http://jsonplaceholder.typicode.local/*" ], "rewritePlugin": { "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rewriteplugin.schema.json", "rewritesFile": "devproxy-rewrites.json" }, "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }Файл конфигурации использует плагин Перезапись для перезаписи URL-адреса перехваченных запросов. Он также настраивает Dev Proxy для перехвата запросов к URL-адресам
https://jsonplaceholder.typicode.comиhttp://jsonplaceholder.typicode.local.Примечание.
Хотя вам не нужно использовать
.localдомен, рекомендуется различать реальные и перехватанные запросы. Кроме того, обратите внимание, что для.localдомена используется протокол HTTP, а не HTTPS. Туннели разработки не поддерживают HTTPS для маршрутизации запросов на нестандартные заголовки хоста на вашем локальном компьютере. Поэтому необходимо использовать HTTP.Создайте файл перезаписи с именем
devproxy-rewrites.json, который изменяет URL-адрес перехватываемых запросов:Файл: devproxy-rewrites.json
{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rewriteplugin.rewritesfile.schema.json", "rewrites": [ { "in": { "url": "^http://jsonplaceholder.typicode.local(.*)" }, "out": { "url": "https://jsonplaceholder.typicode.com$1" } } ] }Файл перезаписи изменяет URL-адрес перехватываемых запросов с
http://jsonplaceholder.typicode.localнаhttps://jsonplaceholder.typicode.com.Запустите прокси-сервер разработки, выполнив команду в командной строке
devproxy.Запустите туннель разработки, выполнив команду в командной строке
devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymous.С помощью этой команды вы открываете новый туннель разработки на компьютере. Вы сопоставляете его с портом 8000, где прокси-сервер разработки прослушивает входящие запросы. Вы также указываете заголовок хоста, перехватываемый прокси-сервером разработки.
Обратите внимание на URL-адрес туннеля разработки, который можно использовать для настройки облачной службы для вызова локального компьютера, например
https://tunnel_id-8000.euw.devtunnels.ms.В веб-браузере откройте URL-адрес проверки туннеля разработки, например
https://tunnel_id-8000-inspect.euw.devtunnels.ms.Имитируйте облачную службу, вызывающую облачный API с помощью URL-адреса туннеля разработки, выполнив команду в командной строке:
curl https://tunnel_id-8000.euw.devtunnels.ms/posts/1Примечание.
Обратите внимание, что имя узла соответствует URL-адресу туннеля разработки на компьютере. Путь соответствует пути API, который требуется проверить.
Обратите внимание, что прокси-сервер разработки перехватывает запрос и пересылает его в облачный API, в конечном итоге возвращая ответ клиенту.
В веб-браузере обратите внимание на сведения о перехватываемом запросе и ответе из облачного API.
Примечание.
Обратите внимание, что URL-адрес записанного запроса является URL-адресом туннеля разработки. Заголовок хоста, который записан, — это заголовок хоста, перехватываемый Dev Proxy.
Закройте девелоперский туннель и остановите Dev Proxy, нажав Ctrl+C в соответствующих сессиях командной строки.
Проверка запросов API с помощью прокси-сервера разработки и DevToolsPlugin
Другим способом проверки запросов API, связанных с проблемами облачной службы, является использование Dev Proxy DevToolsPlugin. Разница между использованием DevToolsPlugin и средствами проверки туннелей разработки заключается в том, что DevToolsPlugin показывает, как прокси разработки перехватывает запрос, используя локальный или перезаписанный URL-адрес.
Настройте прокси-сервер разработки для использования DevToolsPlugin для проверки запросов API с помощью перехваченного URL-адреса.
Сначала давайте настроим прокси-сервер разработки для проверки запросов облачных API. Давайте настроим DevToolsPlugin, чтобы показывать сведения об URL-адресе до того, как прокси-сервер разработки его изменит.
Обновите файл конфигурации прокси-сервера разработки, чтобы использовать DevToolsPlugin:
Файл: devproxyrc.json
{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json", "plugins": [ { "name": "DevToolsPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll" }, { "name": "RewritePlugin", "enabled": true, "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll", "configSection": "rewritePlugin" } ], "urlsToWatch": [ "https://jsonplaceholder.typicode.com/*", "http://jsonplaceholder.typicode.local/*" ], "rewritePlugin": { "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rewriteplugin.schema.json", "rewritesFile": "devproxy-rewrites.json" }, "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }Примечание.
Обратите внимание, что мы добавляем DevToolsPlugin перед RewritePlugin. Сначала добавив DevToolsPlugin, он отображает сведения о перехватываемом запросе перед перезаписи.
Запустите прокси-сервер разработки, выполнив команду в командной строке
devproxy. Обратите внимание, что в прокси-сервере разработчика открывается окно веб-браузера с видимыми средствами разработки Chrome.Запустите туннель разработки, выполнив команду в командной строке
devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymous.Имитируйте облачную службу, вызывающую облачный API с помощью URL-адреса туннеля разработки, выполнив команду в командной строке:
curl https://tunnel_id-8000.euw.devtunnels.ms/posts/1В веб-браузере с помощью средств разработки Chrome обратите внимание на сведения о перехватываемом запросе и ответе из облачного API.
Примечание.
Обратите внимание, что URL-адрес записанного запроса является URL-адресом облачного API. Заголовок хоста, который записан, — это заголовок хоста, перехватываемый Dev Proxy.
Закройте девелоперский туннель и остановите Dev Proxy, нажав Ctrl+C в соответствующих сессиях командной строки.
Настройте Dev Proxy для использования DevToolsPlugin и проверки запросов API с использованием перезаписанных URL-адресов.
Затем обновим конфигурацию прокси-сервера разработки, чтобы отобразить сведения о перезаписываемом URL-адресе.
Обновите файл конфигурации прокси-сервера разработки, переместив DevToolsPlugin после RewritePlugin.
Файл: devproxyrc.json
{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json", "plugins": [ { "name": "RewritePlugin", "enabled": true, "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll", "configSection": "rewritePlugin" }, { "name": "DevToolsPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll" } ], "urlsToWatch": [ "https://jsonplaceholder.typicode.com/*", "http://jsonplaceholder.typicode.local/*" ], "rewritePlugin": { "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rewriteplugin.schema.json", "rewritesFile": "devproxy-rewrites.json" }, "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }Запустите прокси-сервер разработки, выполнив команду в командной строке
devproxy. Обратите внимание, что в прокси-сервере разработчика открывается окно веб-браузера с видимыми средствами разработки Chrome.Запустите туннель разработки, выполнив команду в командной строке
devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymous.Имитируйте облачную службу, вызывающую облачный API с помощью URL-адреса туннеля разработки, выполнив команду в командной строке:
curl https://tunnel_id-8000.euw.devtunnels.ms/posts/1В веб-браузере с помощью средств разработки Chrome обратите внимание на сведения о перехватываемом запросе и ответе из облачного API.
Примечание.
Обратите внимание, что url-адрес записанного запроса и заголовок узла показывают URL-адрес облачного API.
Закройте девелоперский туннель и остановите Dev Proxy, нажав Ctrl+C в соответствующих сессиях командной строки.
Итоги
Используя прокси-сервер разработки и туннель разработки, вы можете проверить запросы API, которые облачные службы выдают облачным API. Вы можете использовать либо средства инспекции тоннелей разработки, либо Dev Proxy DevToolsPlugin для проверки запросов. Оба средства показывают сведения о перехватываемых запросах, включая URL-адрес, заголовки и текст, а также ответ из облачного API. Используя прокси-сервер разработки и туннель разработки, вы можете лучше понять, как облачные службы взаимодействуют с облачными API и устранять проблемы более эффективно.
Следующие шаги
Узнайте больше о плагине Rewrite.