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


Обнаружение теневых API с помощью прокси-сервера разработки

Используя Центр API Azure, вы каталогизируйте API, используемые в вашей организации. Это позволяет сообщить, какие API вы используете, где API находится в своем жизненном цикле, и кто может связаться, если возникли проблемы. Короче говоря, наличие актуального каталога API помогает улучшить систему управления, соответствия требованиям и безопасности.

При создании приложения, особенно если вы интегрируете новые сценарии, вы можете использовать API, которые не зарегистрированы в Центре API Azure. Эти API называются теневыми API. Теневые API — это API, которые не зарегистрированы в вашей организации. Они могут быть API, которые еще не зарегистрированы, или они могут быть API, которые не предназначены для использования в вашей организации.

Одним из способов проверки теневых API является использование прокси-сервера разработки. Прокси-сервер разработки — это симулятор API, который перехватывает и анализирует запросы API из приложений. Одна из функций прокси-сервера разработки проверяет, принадлежат ли перехватанные запросы API к API, зарегистрированным в Центре API.

Снимок экрана: командная строка с проверкой прокси-сервера разработки, зарегистрированных в Центре API Azure.

Перед началом работы

Чтобы обнаружить теневые API, необходимо иметь экземпляр Центра API Azure со сведениями об API, используемых в вашей организации. Если вы еще не создали его, см . краткое руководство. Создание центра API. Кроме того, необходимо установить прокси-сервер разработки.

Копирование сведений центра API

На странице обзора экземпляра Центра API Azure скопируйте имя экземпляра Центра API, имя группы ресурсов и идентификатор подписки. Эти сведения необходимо настроить прокси-сервер ApiCenterOnboardingPlugin разработки, чтобы он смог подключиться к экземпляру Центра API Azure.

Снимок экрана: страница обзора Центра API Azure с выделенными свойствами.

Настройка прокси-сервера разработки

Чтобы проверить, использует ли приложение теневые API, необходимо включить ApiCenterOnboardingPlugin его в файле конфигурации прокси-сервера разработки. Чтобы создать отчет ОБ API, которые использует приложение, добавьте репортера.

Включение ApiCenterOnboardingPlugin

devproxyrc.json В файле добавьте следующую конфигурацию:

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": false
  }
}

В разделе <a0subscriptionId/> и serviceName свойства укажите сведения о экземпляре Центра API Azure.

В свойстве urlsToWatch укажите URL-адреса, которые использует приложение.

Совет

Используйте расширение Visual Studio Code набора средств разработки для управления конфигурацией прокси-сервера разработки.

Добавление репортера

Создает ApiCenterOnboardingPlugin отчет api,которые использует ваше приложение. Чтобы просмотреть этот отчет, добавьте репортера в файл конфигурации прокси-сервера разработки. Dev Proxy предлагает несколько репортеров. В этом примере используется репортер обычного текста.

Обновите devproxyrc.json файл со ссылкой на репортер обычного текста:

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": false
  }
}

Проверьте, использует ли ваше приложение теневые API

Чтобы проверить, использует ли приложение теневые API, подключитесь к подписке Azure, запустите прокси-сервер разработки и позволить ему перехватывать запросы API из приложения. Затем прокси-сервер разработки сравнивает сведения о запросах API с информацией из Центра API Azure и отчетов о любых API, которые не зарегистрированы в Центре API.

Подключение к подписке Azure

В прокси-сервере разработки используются сведения из Центра API Azure, чтобы определить, использует ли ваше приложение теневые API. Чтобы получить эти сведения, он должен подключиться к вашей подписке Azure. Вы можете подключиться к подписке Azure несколькими способами.

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

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

При запуске прокси-сервера разработки он проверяет, может ли он подключиться к подписке Azure. Когда подключение выполнено успешно, вы увидите следующее сообщение:

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    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

Нажмите клавишу R , чтобы начать запись запросов API из приложения.

Использование приложения

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

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    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

◉ Recording... 

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

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through

Проверка теневых API

Остановите запись, нажав клавишу S. Прокси-сервер разработки подключается к экземпляру Центра API и сравнивает сведения о запросах с информацией из Центра API.

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    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

◉ Recording... 

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

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through
○ Stopped recording
 info    Checking if recorded API requests belong to APIs in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...

Когда прокси-сервер разработки завершит анализ, он создает отчет в файле с именем ApiCenterOnboardingPlugin_PlainTextReporter.txt со следующим содержимым:

New APIs that aren't registered in Azure API Center:

https://jsonplaceholder.typicode.com:
  DELETE https://jsonplaceholder.typicode.com/posts/1

APIs that are already registered in Azure API Center:

GET https://jsonplaceholder.typicode.com/posts

Автоматическое подключение теневых API

Они ApiCenterOnboardingPlugin могут не только обнаруживать теневые API, но и автоматически подключить их к Центру API. Чтобы автоматически подключить теневые API, в файле конфигурации прокси-сервера разработки обновите значение createApicEntryForNewApis true.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": true
  }
}

При запуске прокси-сервера разработки с createApicEntryForNewApis заданным значением trueон автоматически создает новые записи API в Центре API Azure для теневых API, обнаруженных им.

Снимок экрана: Центр API, показывающий только что подключенный API.

Автоматическое подключение теневых API с помощью спецификации OpenAPI

При автоматическом подключении теневых API в Центр API можно создать спецификацию OpenAPI для API. Подключение API с спецификациями OpenAPI ускоряет подключение отсутствующих конечных точек и предоставляет необходимые сведения об API. ApiCenterOnboardingPlugin При обнаружении, что прокси-сервер разработки создал новую спецификацию OpenAPI, он связывает его с соответствующим подключенным API в Центре API.

Чтобы автоматически создавать спецификации OpenAPI для подключенных API, обновите конфигурацию прокси-сервера разработки, чтобы включить ее OpenApiSpecGeneratorPlugin.

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.19.0/rc.schema.json",
  "plugins": [
    {
      "name": "OpenApiSpecGeneratorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    },
    {
      "name": "ApiCenterOnboardingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "apiCenterOnboardingPlugin"
    },
    {
      "name": "PlainTextReporter",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ],
  "apiCenterOnboardingPlugin": {
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroupName": "demo",
    "serviceName": "contoso-api-center",
    "workspaceName": "default",
    "createApicEntryForNewApis": true
  }
}

Внимание

Прокси-сервер разработки выполняет подключаемые модули в том порядке, в который они зарегистрированы в конфигурации. Сначала необходимо зарегистрировать OpenApiSpecGeneratorPlugin , чтобы он смог создать спецификации OpenAPI перед ApiCenterOnboardingPlugin подключением новых API.

При запуске прокси-сервера разработки с этой конфигурацией автоматически создаются новые записи API в Центре API Azure для теневых API, обнаруженных им. Для каждого нового API Прокси разработчика создает спецификацию OpenAPI и связывает ее с соответствующим подключенным API в Центре API.

 info    Plugin ApiCenterOnboardingPlugin connecting to Azure...
 info    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

◉ Recording... 

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

 req   ╭ DELETE https://jsonplaceholder.typicode.com/posts/1
 api   ╰ Passed through
○ Stopped recording
 info    Creating OpenAPI spec from recorded requests...
 info    Created OpenAPI spec file jsonplaceholder.typicode.com-20240614104931.json
 info    Checking if recorded API requests belong to APIs in API Center...
 info    Loading APIs from API Center...
 info    Loading API definitions from API Center...
 info    New APIs that aren't registered in Azure API Center:

https://jsonplaceholder.typicode.com:
  DELETE https://jsonplaceholder.typicode.com/posts/1
 info    Creating new API entries in API Center...
 info      Creating API new-jsonplaceholder-typicode-com-1718354977 for https://jsonplaceholder.typicode.com...
 info    DONE

Снимок экрана: Центр API Azure, показывающий недавно подключенный API с спецификацией OpenAPI.

Итоги

С помощью прокси-сервера разработки и его ApiCenterOnboardingPluginможно проверить, используется ли ваше приложение теневые API. Подключаемый модуль анализирует запросы API из приложения и сообщает о любых запросах API, которые не зарегистрированы в Центре API Azure. Подключаемый модуль позволяет легко подключить отсутствующие API в Центр API. Объединяя подключаемый ApiCenterOnboardingPlugin модуль с OpenApiSpecGeneratorPluginмодулем, вы можете автоматически создавать спецификации OpenAPI для вновь подключенных API. Эту проверку можно выполнить вручную или интегрировать с конвейером CI/CD, чтобы убедиться, что приложение использует зарегистрированные API перед выпуском в рабочую среду.

Дополнительные сведения