Архитектура подключаемого модуля
Подключаемый модуль — это класс .NET, зарегистрированный в прокси-сервере разработки, который представляет определенное поведение прокси-сервера разработки. Подключаемый модуль может предлагать рекомендации в режиме реального времени об использовании API, имитации поведения API, анализе нескольких запросов API или создании отчета. В прокси-сервере разработки есть три типа подключаемых модулей:
- перехват подключаемых модулей, которые перехватывают запросы и ответы и могут анализировать и изменять их.
- подключаемые модули отчетов, которые выполняются в запросах записанных с помощью прокси-сервера разработки
- репортеры, которые создают отчеты на основе данных, собранных подключаемыми модулями отчетов
Подключаемые модули регистрируются в файле devproxyrc.json
. Файл содержит список подключаемых модулей для загрузки и их конфигурации.
Прокси-сервер разработки поставляется с коллекцией подключаемых модулей, и вы можете создавать пользовательские подключаемые модули, чтобы расширить функциональные возможности прокси-сервера разработки в соответствии с вашими потребностями.
При запуске прокси-сервера разработки он загружает подключаемые модули, включенные в его файл конфигурации. В зависимости от того, какие подключаемые модули вы включаете, прокси-сервер разработки может предоставлять рекомендации, имитировать поведение API или анализировать запросы API. В следующих разделах объясняется, как работают различные типы подключаемых модулей.
Перехват подключаемых модулей
Когда прокси-сервер разработки перехватывает запрос, соответствующий одному из URL-адресов в массиве urlsToWatch
, он вызывает каждый перехват подключаемый модуль в том порядке, в котором они перечислены в файле конфигурации. Каждый перехват подключаемого модуля наследуется от класса BaseProxyPlugin
и может подписаться на следующие события:
-
BeforeRequest
— возникает, когда прокси-сервер разработки перехватывает запрос. -
BeforeResponse
— возникает после того, как прокси-сервер разработчика получает ответ от сервера. -
AfterResponse
— возникает после отправки ответа прокси-сервера разработки клиенту.
Для каждого из этих событий подключаемые модули могут определять обработчик событий. В обработчике подключаемый модуль может проанализировать запрос и ответ и изменить его при необходимости. Кроме того, он может выводить сообщения с рекомендациями. Чтобы узнать, что возможно, ознакомьтесь с кодом подключаемых модулей, предоставляемыхпрокси-сервера разработки.
Подключаемые модули отчетов
Прокси-сервер разработки позволяет записывать запросы и ответы API. Обычно запись используется для отчета об использовании API или анализа нескольких запросов API. Отчеты подключаемых модулей наследуются от класса BaseReportingPlugin
и регистрируют обработчик событий с помощью события AfterRecordingStop
.
При остановке записи прокси-сервер разработки вызывает событие AfterRecordingStop
, передав список записанных запросов и ответов в качестве аргумента зарегистрированным обработчикам событий. После этого подключаемые модули отчетов могут анализировать записанные данные и создавать объект отчета. Объект отчета — это произвольный объект, определенный подключаемым модулем отчетов. Подключаемые модули отчетов хранят отчеты, вызывая метод StoreReport
.
Важный
Подключаемые модули отчетов создают объекты отчетов, в которых прокси-сервер разработки хранится в памяти. Чтобы преобразовать эти объекты отчета в отчеты, доступные для чтения, необходимо включить один или несколько репортеров в файле конфигурации прокси-сервера разработки.
Журналистам
Сервер разработки использует репортеров для преобразования объектов отчетов, созданных подключаемыми модулями отчетов, в читаемые пользователем отчеты. Например, MarkdownReporter преобразует объект отчета в файл Markdown. Репортеры — это специальные подключаемые модули, наследуемые от класса BaseReporter
. Они реализуют метод GetReport
, который принимает в качестве аргумента отчет, созданный подключаемым модулем отчетов, и преобразует его в строку. Затем эта строка сохраняется на диске после PluginName_ReporterName.ReporterExtension
шаблона, например ApiCenterOnboardingPlugin_MarkdownReporter.md
.
Важный
Так как репортеры зависят от объектов отчета, созданных подключаемыми модулями отчетов, необходимо включить подключаемые модули отчетов в файле конфигурации прокси-сервера разработки после создания отчетов подключаемых модулей. Если вы включите их перед отправкой отчетов подключаемых модулей, репортеры не будут иметь никаких данных для отчета.