Interfejs API platformy Azure zwraca pustą odpowiedź
Korzystając z artykułu z serii rozwiązywania problemów z usługą Azure API Management, jest to pierwszy scenariusz laboratorium. Upewnij się, że wykonano instrukcje konfiguracji laboratorium zgodnie z tym, aby ponownie utworzyć problem.
Oryginalna wersja produktu: usługa API Management
Oryginalny numer KB: 4464936
Symptomy
Pusty interfejs API składa się z dwóch operacji GetHeaders i GetMyIp. Funkcja GetMyIp zwraca wartość wartości nagłówka X-FORWARDED-FOR, a funkcja GetHeaders zwraca wszystkie wartości nagłówka żądania. Funkcja GetMyIp zwraca oczekiwane dane wyjściowe, ale nagle usługa GetHeaders zaczęła zwracać pustą odpowiedź (bez treści odpowiedzi).
Oczekiwane dane wyjściowe interfejsu API GetHeaders powinny wyglądać mniej więcej tak:
{
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-US,en;q=0.5",
"Connection": "close",
"Cookie": "_gauges_unique_day=1; _gauges_unique_month=1; _gauges_unique_year=1; _gauges_unique=1",
"Host": "eu.httpbin.org",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
}
}
Kroki rozwiązywania problemów
Aby debugować tego rodzaju problemy, najlepszym rozwiązaniem jest zebranie śladu inspektora usługi APIM w celu sprawdzenia przetwarzania żądań wewnątrz potoku usługi APIM.
- Jeśli przyjrzysz się śledzeniu, zauważysz, że brakuje zasad żądania przesyłania dalej.
- Zasady żądania przesyłania dalej przesyłają dalej przychodzące żądanie do usługi zaplecza określonej w kontekście żądania.
- Usunięcie tych zasad powoduje, że żądanie nie jest przekazywane do usługi zaplecza, a zasady w sekcji ruchu wychodzącego są oceniane natychmiast po pomyślnym zakończeniu zasad w sekcji przychodzącej.
- W związku z tym, jeśli sprawdzisz sekcję <zaplecza > operacji GetHeaders w obszarze Blank-API, zauważysz, że zasady żądania przesyłania dalej zostaną usunięte.
- Dodaj zasady żądania przesyłania dalej w sekcji zaplecza lub dodaj <element base/> , aby dziedziczyły zasady żądania przesyłania dalej z poziomu nadrzędnego (tj. z poziomu interfejsu API), co powinno rozwiązać problem.
Przeczytaj o zasadach żądania przesyłania dalej, aby dowiedzieć się więcej o tym.
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.