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:
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.
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.com
lokalizacji . Łą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
Skonfiguruj serwer proxy deweloperów, aby przechwycić żądania do
https://jsonplaceholder.typicode.com
ihttp://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
ihttp://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.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
nahttps://jsonplaceholder.typicode.com
.Uruchom serwer proxy dev, uruchamiając polecenie w wierszu
devproxy
polecenia .Uruchom tunel deweloperski, uruchamiając polecenie w wierszu
devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymous
polecenia .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.
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
.W przeglądarce internetowej otwórz adres URL inspekcji tunelu deweloperskiego, na przykład
https://tunnel_id-8000-inspect.euw.devtunnels.ms
.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ć.
Zwróć uwagę, że serwer proxy dewelopera przechwytuje żądanie i przekazuje je do interfejsu API w chmurze, ostatecznie zwracając odpowiedź na klienta.
W przeglądarce internetowej zwróć uwagę na informacje o przechwyconym żądaniu i odpowiedzi z interfejsu API chmury.
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.
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.
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.
Uruchom serwer proxy dev, uruchamiając polecenie w wierszu
devproxy
polecenia . Zwróć uwagę, że serwer proxy deweloperów otwiera okno przeglądarki internetowej z widocznymi narzędziami Chrome Dev Tools.Uruchom tunel deweloperski, uruchamiając polecenie w wierszu
devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymous
polecenia .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
.W przeglądarce internetowej z narzędziami Chrome Dev Tools zwróć uwagę na informacje o przechwyconym żądaniu i odpowiedzi z interfejsu API chmury.
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.
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.
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 }
Uruchom serwer proxy dev, uruchamiając polecenie w wierszu
devproxy
polecenia . Zwróć uwagę, że serwer proxy deweloperów otwiera okno przeglądarki internetowej z widocznymi narzędziami Chrome Dev Tools.Uruchom tunel deweloperski, uruchamiając polecenie w wierszu
devtunnel host --host-header jsonplaceholder.typicode.local --port-numbers 8000 --allow-anonymous
polecenia .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
.W przeglądarce internetowej z narzędziami Chrome Dev Tools zwróć uwagę na informacje o przechwyconym żądaniu i odpowiedzi z interfejsu API chmury.
Uwaga
Zwróć uwagę, że zarówno zarejestrowany adres URL żądania, jak i nagłówek hosta zawierają adres URL interfejsu API chmury.
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.