Udostępnij za pośrednictwem


Sprawdzanie żądań interfejsu API wystawionych przez usługi w chmurze

Podczas integrowania aplikacji z usługami w chmurze jednym z wyzwań, z którymi możesz się zmierzyć, jest zrozumienie sposobu interakcji usługi w chmurze z używanymi interfejsami API. Możliwość sprawdzania żądań interfejsu API jest szczególnie ważna podczas rozwiązywania problemów lub gdy próbujesz zrozumieć, jak działa usługa w chmurze. Zazwyczaj jest to trudne, ponieważ nie masz dostępu do środowiska uruchomieniowego usługi w chmurze, a także nie masz dostępu do narzędzi do monitorowania interfejsu API w chmurze. Korzystając z serwera proxy deweloperskiego i tuneli deweloperskich, można sprawdzić żądania interfejsu API, które usługi w chmurze wydają do interfejsów API w chmurze.

Ważne

Przed kontynuowaniem zainstaluj tunele deweloperskie i skonfiguruj narzędzie do użycia.

Jak usługi w chmurze nazywają interfejsy API w chmurze

Po zintegrowaniu aplikacji z usługami w chmurze usługa w chmurze wywołuje interfejs API w chmurze. Na poniższym diagramie przedstawiono ten scenariusz:

Diagram przedstawiający sposób, w jaki usługa w chmurze wywołuje interfejs API chmury.

Aby sprawdzić żądania interfejsu API dotyczące problemów z usługą w chmurze, musisz mieć dostęp do narzędzi do monitorowania dla interfejsu API w chmurze. Często nie masz dostępu do tych narzędzi. Możesz obejść to ograniczenie, korzystając ze środowiska przejściowego. Jednak czasochłonne jest skonfigurowanie i utrzymanie środowiska przejściowego. Co więcej, jeśli nie jesteś właścicielem interfejsu API chmury, w ogóle nie możesz skonfigurować środowiska przejściowego.

Sprawdzanie żądań interfejsu API przy użyciu serwera proxy deweloperskiego i tuneli deweloperskich

Korzystając z serwera proxy deweloperskiego i tuneli deweloperskich, możesz sprawdzić żądania interfejsu API, które występują w przypadku problemów z usługą w chmurze do interfejsu API w chmurze.

Diagram przedstawiający sposób inspekcji wywołań interfejsu API w chmurze przy użyciu tuneli deweloperskich i serwera proxy deweloperów.

Zamiast bezpośrednio wywoływać interfejs API chmury, należy skonfigurować usługę w chmurze tak, aby wywoływać tunel deweloperski uruchamiany na komputerze lokalnym (1). Należy skonfigurować tunel deweloperski tak, aby używał nagłówka hosta przechwytywanego przez serwer proxy deweloperów. Za każdym razem, gdy usługa w chmurze wywołuje tunel deweloperski, przekazuje żądanie do serwera proxy deweloperów, który przechwytuje go (2). Używając serwera proxy deweloperskiego RewritePlugin, zmieniasz adres URL przechwyconego żądania i przekazujesz go do interfejsu API w chmurze (3). Interfejs API chmury przetwarza żądanie i zwraca odpowiedź na serwer proxy deweloperów (4). Serwer proxy deweloperów przekazuje odpowiedź do tunelu deweloperskiego (5), który przekazuje ją do usługi w chmurze (6). Ponieważ żądanie jest kierowane przez komputer lokalny, możesz sprawdzić jego informacje, w tym adres URL, nagłówki i treść oraz odpowiedź z interfejsu API chmury.

Scenariusz

Załóżmy, że chcesz sprawdzić żądania interfejsu API dotyczące problemów z usługą w chmurze do demonstracyjnego interfejsu API JSONPlaceholder znajdującego się w https://jsonplaceholder.typicode.comlokalizacji . Łącząc serwer proxy deweloperów i tunele deweloperskie, można przechwycić żądania i sprawdzić ich informacje.

Żądania można sprawdzić przy użyciu narzędzi inspekcji tuneli deweloperskich lub za pomocą narzędzia Dev Proxy DevToolsPlugin. Oba narzędzia używają narzędzi Chrome Dev Tools do wyświetlania informacji o przechwyconych żądaniach i odpowiedziach. W przypadku korzystania z narzędzi inspekcji tuneli deweloperskich adres URL tunelu deweloperskiego jest wyświetlany jako adres URL żądania. W porównaniu z użyciem serwera dev Proxy DevToolsPlugin zobaczysz, jak serwer proxy deweloperów przechwytuje żądanie przy użyciu lokalnego lub przepisanego adresu URL.

Sprawdzanie żądań interfejsu API przy użyciu serwera proxy deweloperskiego, tuneli deweloperskich i narzędzi do inspekcji tuneli deweloperskich

  1. Skonfiguruj serwer proxy deweloperów, aby przechwycić żądania do https://jsonplaceholder.typicode.com i http://jsonplaceholder.typicode.local:

    {
      "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.23.0/rc.schema.json",
      "plugins": [
        {
          "name": "RewritePlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
          "configSection": "rewritePlugin"
        }
      ],
      "urlsToWatch": [
        "https://jsonplaceholder.typicode.com/*",
        "http://jsonplaceholder.typicode.local/*"
      ],
      "rewritePlugin": {
        "rewritesFile": "devproxy-rewrites.json"
      },
      "logLevel": "information",
      "newVersionNotification": "stable",
      "showSkipMessages": true
    }
    

    Plik konfiguracji używa funkcji RewritePlugin do ponownego zapisania adresu URL przechwyconych żądań. Konfiguruje również serwer proxy deweloperów w celu przechwytywania żądań do https://jsonplaceholder.typicode.com i http://jsonplaceholder.typicode.local adresów URL.

    Uwaga

    Chociaż nie jest konieczne użycie .local domeny, dobrym rozwiązaniem jest rozróżnienie między rzeczywistymi i przechwyconymi żądaniami. Należy również zauważyć, że w przypadku .local domeny należy użyć protokołu HTTP, a nie HTTPS. Tunele deweloperskie nie obsługują protokołu HTTPS na potrzeby routingu żądań do niestandardowych nagłówków hostów na komputerze lokalnym, dlatego należy używać protokołu HTTP.

  2. Utwórz plik ponownego zapisywania o nazwie devproxy-rewrites.json , który zmienia adres URL przechwyconych żądań:

    {
      "rewrites": [
        {
          "in": {
            "url": "^http://jsonplaceholder.typicode.local(.*)"
          },
          "out": {
            "url": "https://jsonplaceholder.typicode.com$1"
          }
        }
      ]
    }
    

    Plik ponownego zapisywania zmienia adres URL przechwyconych żądań z http://jsonplaceholder.typicode.local na https://jsonplaceholder.typicode.com.

  3. Uruchom serwer proxy dev, uruchamiając polecenie w wierszu devproxypolecenia .

    Zrzut ekranu przedstawiający wiersz polecenia z uruchomionym serwerem proxy dev.

  4. Uruchom tunel deweloperski, uruchamiając polecenie w wierszu devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymouspolecenia .

    Zrzut ekranu wiersza polecenia z uruchomionym serwerem proxy dev i tunelem deweloperskim.

    Za pomocą tego polecenia otworzysz nowy tunel deweloperski na maszynie. Mapujesz go na port 8000, który jest miejscem, w którym serwer proxy deweloperów nasłuchuje żądań przychodzących. Należy również określić nagłówek hosta przechwycony przez serwer proxy dewelopera.

  5. Zanotuj adres URL tunelu deweloperskiego, którego można użyć do skonfigurowania usługi w chmurze w celu wywołania maszyny lokalnej, na przykład https://tunnel_id-8000.euw.devtunnels.ms.

  6. W przeglądarce internetowej otwórz adres URL inspekcji tunelu deweloperskiego, na przykład https://tunnel_id-8000-inspect.euw.devtunnels.ms.

  7. Symuluj usługę w chmurze wywołującą interfejs API w chmurze przy użyciu adresu URL tunelu deweloperskiego, uruchamiając polecenie w wierszu polecenia: curl https://tunnel_id-8000.euw.devtunnels.ms/posts/1.

    Uwaga

    Zwróć uwagę, że nazwa hosta odpowiada adresowi URL tunelu deweloperskiego na maszynie. Ścieżka jest zgodna ze ścieżką interfejsu API, który chcesz sprawdzić.

    Zrzut ekranu przedstawiający wiersz polecenia z uruchomionym serwerem proxy dev i tunelem deweloperskim oraz polecenie curl wywołującym tunel deweloperski.

  8. Zwróć uwagę, że serwer proxy dewelopera przechwytuje żądanie i przekazuje je do interfejsu API w chmurze, ostatecznie zwracając odpowiedź na klienta.

  9. W przeglądarce internetowej zwróć uwagę na informacje o przechwyconym żądaniu i odpowiedzi z interfejsu API chmury.

    Zrzut ekranu przedstawiający przeglądarkę internetową z narzędziami inspekcji tunelu deweloperskiego z przechwyconym żądaniem.

    Uwaga

    Zwróć uwagę, że zarejestrowany adres URL żądania to adres URL tunelu deweloperskiego. Zarejestrowany nagłówek hosta to nagłówek hosta przechwycony przez serwer proxy dewelopera.

  10. Zamknij tunel deweloperski i zatrzymaj serwer proxy deweloperów, naciskając Ctrl+C w odpowiednich sesjach w wierszu polecenia.

Sprawdzanie żądań interfejsu API przy użyciu serwera proxy dev i devToolsPlugin

Innym sposobem sprawdzenia żądań interfejsu API, które występują w przypadku problemów z usługą w chmurze, jest użycie devToolsPlugin serwera proxy deweloperów. Różnica między używaniem narzędzi inspekcji devToolsPlugin i tuneli deweloperskich polega na tym, że devToolsPlugin pokazuje, jak serwer proxy dewelopera przechwytuje żądanie przy użyciu lokalnego lub przepisanego adresu URL.

Konfigurowanie serwera proxy deweloperskiego do sprawdzania żądań interfejsu API przy użyciu przechwyconego adresu URL przy użyciu metodyki DevToolsPlugin

Najpierw skonfigurujmy serwer proxy deweloperów w celu sprawdzenia żądań interfejsu API w chmurze. Skonfigurujmy narzędzie DevToolsPlugin, aby wyświetlić informacje o adresie URL przed ponownym zapisywaniem serwera proxy deweloperów.

  1. Zaktualizuj plik konfiguracji serwera proxy deweloperów, aby użyć narzędzia DevToolsPlugin:

    {
      "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.23.0/rc.schema.json",
      "plugins": [
        {
          "name": "DevToolsPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
        },
        {
          "name": "RewritePlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
          "configSection": "rewritePlugin"
        }
      ],
      "urlsToWatch": [
        "https://jsonplaceholder.typicode.com/*",
        "http://jsonplaceholder.typicode.local/*"
      ],
      "rewritePlugin": {
        "rewritesFile": "devproxy-rewrites.json"
      },
      "logLevel": "information",
      "newVersionNotification": "stable",
      "showSkipMessages": true
    }
    

    Uwaga

    Zwróć uwagę, że dodamy element DevToolsPlugin przed poleceniem RewritePlugin. Dodając najpierw element DevToolsPlugin, wyświetla informacje o przechwyconym żądaniu przed jego ponownym zapisem.

  2. Uruchom serwer proxy dev, uruchamiając polecenie w wierszu devproxypolecenia . Zwróć uwagę, że serwer proxy deweloperów otwiera okno przeglądarki internetowej z widocznymi narzędziami Chrome Dev Tools.

  3. Uruchom tunel deweloperski, uruchamiając polecenie w wierszu devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymouspolecenia .

  4. Symuluj usługę w chmurze wywołującą interfejs API w chmurze przy użyciu adresu URL tunelu deweloperskiego, uruchamiając polecenie w wierszu polecenia: curl https://tunnel_id-8000.euw.devtunnels.ms/posts/1.

  5. W przeglądarce internetowej z narzędziami Chrome Dev Tools zwróć uwagę na informacje o przechwyconym żądaniu i odpowiedzi z interfejsu API chmury.

    Zrzut ekranu przedstawiający przeglądarkę internetową z narzędziami inspekcji serwera proxy deweloperów pokazującymi przechwycone żądanie.

    Uwaga

    Zwróć uwagę, że zarejestrowany adres URL żądania to adres URL interfejsu API chmury. Zarejestrowany nagłówek hosta to nagłówek hosta przechwycony przez serwer proxy dewelopera.

  6. Zamknij tunel deweloperski i zatrzymaj serwer proxy deweloperów, naciskając Ctrl+C w odpowiednich sesjach w wierszu polecenia.

Konfigurowanie serwera proxy deweloperów w celu używania narzędzia DevToolsPlugin do sprawdzania żądań interfejsu API przy użyciu przepisanego adresu URL

Następnie zaktualizujmy konfigurację serwera proxy deweloperów, aby wyświetlić informacje o przepisanym adresie URL.

  1. Zaktualizuj plik konfiguracji serwera proxy deweloperów, przenosząc element DevToolsPlugin po ponownym zapisaniuPlugin:

    {
      "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.23.0/rc.schema.json",
      "plugins": [
        {
          "name": "RewritePlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
          "configSection": "rewritePlugin"
        },
        {
          "name": "DevToolsPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
        }
      ],
      "urlsToWatch": [
        "https://jsonplaceholder.typicode.com/*",
        "http://jsonplaceholder.typicode.local/*"
      ],
      "rewritePlugin": {
        "rewritesFile": "devproxy-rewrites.json"
      },
      "logLevel": "information",
      "newVersionNotification": "stable",
      "showSkipMessages": true
    }
    
  2. Uruchom serwer proxy dev, uruchamiając polecenie w wierszu devproxypolecenia . Zwróć uwagę, że serwer proxy deweloperów otwiera okno przeglądarki internetowej z widocznymi narzędziami Chrome Dev Tools.

  3. Uruchom tunel deweloperski, uruchamiając polecenie w wierszu devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymouspolecenia .

  4. Symuluj usługę w chmurze wywołującą interfejs API w chmurze przy użyciu adresu URL tunelu deweloperskiego, uruchamiając polecenie w wierszu polecenia: curl https://tunnel_id-8000.euw.devtunnels.ms/posts/1.

  5. W przeglądarce internetowej z narzędziami Chrome Dev Tools zwróć uwagę na informacje o przechwyconym żądaniu i odpowiedzi z interfejsu API chmury.

    Zrzut ekranu przedstawiający przeglądarkę internetową z narzędziami inspekcji serwera proxy deweloperów pokazującymi przechwycone żądanie z adresami URL interfejsu API w chmurze.

    Uwaga

    Zwróć uwagę, że zarówno zarejestrowany adres URL żądania, jak i nagłówek hosta zawierają adres URL interfejsu API chmury.

  6. Zamknij tunel deweloperski i zatrzymaj serwer proxy deweloperów, naciskając Ctrl+C w odpowiednich sesjach w wierszu polecenia.

Podsumowanie

Korzystając z serwera proxy deweloperskiego i tuneli deweloperskich, można sprawdzić żądania interfejsu API, które usługi w chmurze wydają do interfejsów API w chmurze. Aby sprawdzić żądania, możesz użyć narzędzi inspekcji tuneli deweloperskich lub dev Proxy DevToolsPlugin. Oba narzędzia pokazują informacje o przechwyconych żądaniach, w tym adres URL, nagłówki i treść oraz odpowiedź z interfejsu API chmury. Korzystając z serwera proxy deweloperskiego i tuneli deweloperskich, możesz lepiej zrozumieć, jak usługi w chmurze współdziałają z interfejsami API w chmurze i skuteczniej rozwiązywać problemy.

Następne kroki

Dowiedz się więcej o rewritePlugin.