Udostępnij za pośrednictwem


Odnajdywanie interfejsów API w tle przy użyciu serwera proxy deweloperskiego

Interfejsy API wykazu używane w organizacji przy użyciu centrum interfejsów API platformy Azure. Dzięki temu można określić, które interfejsy API są używane, gdzie interfejs API znajduje się w jego cyklu życia i kto ma się skontaktować, jeśli występują problemy. Krótko mówiąc, posiadanie aktualnego wykazu interfejsów API pomaga poprawić poziom ładu, zgodności i zabezpieczeń.

Podczas kompilowania aplikacji, zwłaszcza jeśli integrujesz nowe scenariusze, możesz używać interfejsów API, które nie są zarejestrowane w Centrum interfejsów API platformy Azure. Te interfejsy API są nazywane interfejsami API w tle. Interfejsy API w tle to interfejsy API, które nie są zarejestrowane w organizacji. Mogą to być interfejsy API, które nie zostały jeszcze zarejestrowane lub mogą być interfejsami API, które nie mają być używane w organizacji.

Jednym ze sposobów sprawdzania pod kątem interfejsów API w tle jest użycie serwera proxy deweloperskiego. Serwer proxy deweloperów to symulator interfejsu API, który przechwytuje i analizuje żądania interfejsu API z aplikacji. Jedną z funkcji serwera proxy deweloperów jest sprawdzenie, czy przechwycone żądania interfejsu API należą do interfejsów API zarejestrowanych w Centrum interfejsów API.

Zrzut ekranu przedstawiający wiersz polecenia przedstawiający sprawdzanie, czy zarejestrowane żądania interfejsu API są zarejestrowane w centrum interfejsu API platformy Azure.

Przed rozpoczęciem

Aby wykryć interfejsy API w tle, musisz mieć wystąpienie centrum interfejsów API platformy Azure z informacjami o interfejsach API używanych w organizacji. Jeśli jeszcze go nie utworzono, zobacz Szybki start: tworzenie centrum interfejsu API. Ponadto należy zainstalować serwer proxy deweloperów.

Kopiowanie informacji centrum interfejsu API

Na stronie Przegląd wystąpienia centrum interfejsu API platformy Azure skopiuj nazwę wystąpienia centrum interfejsu API, nazwę grupy zasobów i identyfikator subskrypcji. Te informacje są potrzebne do skonfigurowania serwera proxy ApiCenterOnboardingPlugin deweloperskiego, aby można było nawiązać połączenie z wystąpieniem centrum interfejsu API platformy Azure.

Zrzut ekranu przedstawiający stronę przeglądu usługi Azure API Center z wyróżnionymi kilkoma właściwościami.

Konfigurowanie serwera proxy deweloperskiego

Aby sprawdzić, czy aplikacja korzysta z interfejsów API w tle, należy włączyć element ApiCenterOnboardingPlugin w pliku konfiguracji serwera proxy deweloperów. Aby utworzyć raport interfejsów API używanych przez aplikację, dodaj reportera.

Włącz ApiCenterOnboardingPlugin

devproxyrc.json W pliku dodaj następującą konfigurację:

{
  "$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
  }
}

We właściwościach , resourceGroupNamei serviceName podaj informacje o wystąpieniu subscriptionIdcentrum interfejsu API platformy Azure.

urlsToWatch We właściwości określ adresy URL używane przez aplikację.

Napiwek

Użyj rozszerzenia Dev Proxy Toolkit programu Visual Studio Code, aby łatwo zarządzać konfiguracją serwera proxy deweloperów.

Dodawanie reportera

Element ApiCenterOnboardingPlugin tworzy raport interfejsów API używanych przez aplikację. Aby wyświetlić ten raport, dodaj reportera do pliku konfiguracji serwera proxy deweloperów. Serwer proxy deweloperów oferuje kilku reporterów. W tym przykładzie użyjesz reportera zwykłego tekstu.

devproxyrc.json Zaktualizuj plik przy użyciu odwołania do reportera zwykłego tekstu:

{
  "$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
  }
}

Sprawdzanie, czy aplikacja korzysta z interfejsów API w tle

Aby sprawdzić, czy aplikacja korzysta z interfejsów API w tle, połącz się z subskrypcją platformy Azure, uruchom serwer proxy deweloperów i pozwól jej przechwycić żądania interfejsu API z aplikacji. Następnie serwer proxy deweloperów porównuje informacje o żądaniach interfejsu API z informacjami z Centrum interfejsów API platformy Azure i raportami dotyczącymi wszystkich interfejsów API, które nie są zarejestrowane w Centrum interfejsów API.

Nawiązywanie połączenia z subskrypcją platformy Azure

Serwer proxy deweloperów używa informacji z Centrum interfejsów API platformy Azure w celu określenia, czy aplikacja korzysta z interfejsów API w tle. Aby uzyskać te informacje, potrzebuje połączenia z subskrypcją platformy Azure. Możesz nawiązać połączenie z subskrypcją platformy Azure na kilka sposobów.

Uruchamianie serwera proxy deweloperskiego

Po nawiązaniu połączenia z subskrypcją platformy Azure uruchom usługę Dev Proxy. Jeśli uruchomisz serwer proxy dewelopera z tego samego folderu, w którym devproxyrc.json znajduje się plik, automatycznie ładuje konfigurację. W przeciwnym razie określ ścieżkę do pliku konfiguracji przy użyciu --config-file opcji .

Po uruchomieniu usługi Dev Proxy sprawdza, czy może nawiązać połączenie z subskrypcją platformy Azure. Po pomyślnym nawiązaniu połączenia zostanie wyświetlony komunikat podobny do następującego:

 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

Naciśnij pozycję r , aby rozpocząć nagrywanie żądań interfejsu API z aplikacji.

Używanie aplikacji

Użyj aplikacji, jak zwykle. Serwer proxy deweloperów przechwytuje żądania interfejsu API i przechowuje informacje o nich w pamięci. W wierszu polecenia, w którym jest uruchamiany serwer proxy deweloperów, powinny zostać wyświetlone informacje o żądaniach interfejsu API, które wykonuje Aplikacja.

 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

Sprawdzanie interfejsów API w tle

Zatrzymaj nagrywanie, naciskając s. Serwer proxy dewelopera łączy się z wystąpieniem centrum interfejsu API i porównuje informacje o żądaniach z informacjami z Centrum interfejsu 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...

Gdy serwer proxy deweloperów zakończy analizę, tworzy raport w pliku o nazwie o ApiCenterOnboardingPlugin_PlainTextReporter.txt następującej zawartości:

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

Automatyczne dołączanie interfejsów API w tle

Narzędzie ApiCenterOnboardingPlugin może nie tylko wykrywać interfejsy API w tle, ale także automatycznie dołączać je do centrum interfejsów API. Aby automatycznie dołączać interfejsy API w tle, w pliku konfiguracji serwera proxy deweloperów zaktualizuj element createApicEntryForNewApis na 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
  }
}

Po uruchomieniu serwera proxy deweloperskiego z ustawioną wartością createApicEntryForNewApis trueautomatycznie tworzy nowe wpisy interfejsu API w centrum interfejsów API platformy Azure dla wykrytych przez nią interfejsów API w tle.

Zrzut ekranu przedstawiający centrum interfejsu API z nowo dołączonym interfejsem API.

Automatyczne dołączanie interfejsów API w tle przy użyciu specyfikacji interfejsu OpenAPI

Jeśli zdecydujesz się automatycznie dołączać interfejsy API w tle do Centrum interfejsów API, możesz wygenerować specyfikację interfejsu OpenAPI dla interfejsu API. Dołączanie interfejsów API przy użyciu specyfikacji interfejsu OpenAPI przyspiesza dołączanie brakujących punktów końcowych i dostarczanie niezbędnych informacji o interfejsie API. Po wykryciu ApiCenterOnboardingPlugin , że serwer proxy deweloperów utworzył nową specyfikację interfejsu OpenAPI, kojarzy go z odpowiednim dołączonym interfejsem API w Centrum interfejsu API.

Aby automatycznie wygenerować specyfikacje interfejsu OpenAPI dla dołączonych interfejsów API, zaktualizuj konfigurację serwera proxy deweloperskiego, aby uwzględnić element 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
  }
}

Ważne

Serwer proxy deweloperów wykonuje wtyczki w kolejności, w której są zarejestrowane w konfiguracji. Musisz zarejestrować pierwszy element OpenApiSpecGeneratorPlugin , aby można było utworzyć specyfikacje interfejsu ApiCenterOnboardingPlugin OpenAPI przed dołączeniami nowych interfejsów API.

Po uruchomieniu serwera proxy deweloperskiego z tą konfiguracją automatycznie tworzy nowe wpisy interfejsu API w centrum interfejsów API platformy Azure dla wykrytych przez nią interfejsów API w tle. Dla każdego nowego interfejsu API serwer proxy dewelopera generuje specyfikację interfejsu OpenAPI i kojarzy ją z odpowiednim dołączonym interfejsem API w Centrum interfejsu 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

Zrzut ekranu centrum interfejsu API platformy Azure przedstawiający nowo dołączony interfejs API ze specyfikacją interfejsu OpenAPI.

Podsumowanie

Korzystając z serwera proxy deweloperskiego i jego ApiCenterOnboardingPluginusługi , możesz sprawdzić, czy aplikacja korzysta z interfejsów API w tle. Wtyczka analizuje żądania interfejsu API z aplikacji i raportuje żądania interfejsu API, które nie są zarejestrowane w centrum interfejsu API platformy Azure. Wtyczka umożliwia łatwe dołączanie brakujących interfejsów API do Centrum interfejsów API. Łącząc wtyczkę ApiCenterOnboardingPlugin z interfejsem , można automatycznie wygenerować specyfikacje interfejsu OpenApiSpecGeneratorPluginOpenAPI dla nowo dołączonych interfejsów API. Tę kontrolę można uruchomić ręcznie lub zintegrować z potokiem ciągłej integracji/ciągłego wdrażania, aby upewnić się, że aplikacja korzysta z zarejestrowanych interfejsów API przed udostępnieniem jej do środowiska produkcyjnego.

Więcej informacji