Obsługa błędów HTTP w mapowaniach danych usług internetowych

Projekty integracji danych, które wykorzystują informacje z zewnętrznych usług internetowych, mogą być podatne na błędy HTTP podczas pobierania danych z tych usług. Kiedy mapowania danych działają pod kontrolą automatyczną, szczególnie ważne jest wykrywanie i zgłaszanie błędów, nawet jeśli występują one bardzo rzadko.

Mapowanie danych w MapForce może obejmować wywołania usług internetowych i bezpośrednio zapisywać wynik do pliku lub bazy danych, lub łączyć go z innymi danymi wejściowymi w celu dalszej obróbki. Niezależnie od ostatecznego wyniku, błąd HTTP występujący podczas żądania do usługi internetowej REST może zagrozić poprawnemu działaniu mapowania.

MapForce oferuje funkcje umożliwiające obsługę błędów HTTP, zamiast po prostu przerywać wykonywanie transformacji. Programiści mogą skonfigurować treść żądania do usługi internetowej REST, aby obsługiwać i raportować wyjątki na podstawie kodu stanu HTTP zwróconego przez serwer.

Spójrzmy na przykład.

Przykładowe mapowania danych, które są instalowane wraz z programem MapForce, zawierają rzeczywisty przykład mapowania usługi internetowej REST o nazwie AirportStatus.mfd. To mapowanie korzysta z usługi internetowej sponsorowanej przez Federalną Administrację Lotniczą, która udostępnia informacje o opóźnieniach w ruchu na głównych amerykańskich lotniskach. Dane wejściowe tego mapowania to trzyliterowy kod lotniska, który jest przekazywany do usługi internetowej, a wynik jest zwracany w formacie pliku JSON. Mapowanie i przykładowy wynik są przedstawione poniżej.

W przypadku wystąpienia jakiegokolwiek błędu HTTP, proces mapowania nie zostanie zakończony pomyślnie.

Plik pomocy MapForce zawiera opis obsługi odpowiedzi usługi internetowej REST w oparciu o warunki. Możemy po prostu wkleić fragment kodu odpowiedzialny za obsługę błędów HTTP do istniejącego odwzorowania, ale nie będziemy mieli możliwości zweryfikowania wyniku w przypadku wystąpienia błędu HTTP. Nie możemy zmusić usługi internetowej FAA do generowania błędu HTTP w celach testowych!

Zamiast tego, możemy użyć usługi internetowej dostępnej pod adresem httpstat.us, aby generować różne kody statusu HTTP i odpowiadające im opisy, co jest przydatne do testowania w oddzielnym procesie mapowania danych. Na przykład, adres URL https://httpstat.us/200 w oknie przeglądarki zwraca komunikat "200 OK". Adres URL https://httpstat.us/400 zwraca komunikat "400 Bad Request", i tak dalej, dla wszystkich zdefiniowanych kodów statusu, aż do 524.

Możemy zaimplementować żądanie REST dla tej usługi w MapForce, po prostu otwierając nowy plik mapowania i klikając przycisk "Wstaw usługę internetową" na pasku narzędzi:

Otwiera się okno dialogowe "Ustawienia wywołań usługi internetowej", w którym możemy ręcznie skonfigurować ustawienia. Użyjemy parametru zamiast konkretnego kodu statusu, abyśmy mogli łatwo przetestować różne wartości.

Oto odwzorowanie, które pozwala na przekazanie stałej jako parametru kodu:

Domyślnie, funkcja usługi internetowej obsługuje tylko standardowe kody odpowiedzi HTTP w zakresie od 200 do 299. Możemy dodać obsługę innych kodów, klikając prawym przyciskiem myszy na elemencie "Body" w sekcji "Odpowiedź", aby otworzyć okno dialogowe "Struktura odpowiedzi" i rozszerzyć zakres akceptowanych kodów statusu:

Możemy przekształcić wynik żądania REST na prosty plik tekstowy, korzystając z funkcji decode-mime-entity. Usługa internetowa nie przekazuje informacji o kodowaniu znaków w nagłówku odpowiedzi, dlatego przypiszemy stałą wartość "utf-8" do funkcji dekodowania.

Teraz możemy użyć przycisku "Wyjście" (Output), znajdującego się na dole okna mapowania w MapForce, aby uruchomić proces mapowania i sprawdzić wynik

Możemy zmienić stałą wejściową w panelu mapowania i ponownie uruchomić proces, aby zobaczyć różnicę

Możemy użyć funkcji concat, aby połączyć wynik z innymi informacjami i stworzyć bardziej czytelny komunikat statusu dla użytkownika:

Po przetestowaniu mapowania z wykorzystaniem różnych możliwych kodów statusu HTTP i upewnieniu się, że wyniki są zadowalające, możemy dodać obsługę błędów HTTP do istniejącego mapowania AirportStatus.mfd, korzystając z operacji kopiowania i wklejania. Najpierw utworzymy nowe ciało odpowiedzi w mapowaniu AirportStatus, aby obsłużyć kody odpowiedzi wykraczające poza normalny zakres. Możemy kliknąć prawym przyciskiem myszy element "Body" po stronie odpowiedzi usługi internetowej, aby dodać nowy węzeł "Body".

To dodaje nowy blok i otwiera okno dialogowe "Struktura odpowiedzi", w którym będziemy definiować sposób obsługi kodów statusu HTTP większych niż 299:

Teraz możemy skopiować elementy definiujące sposób obsługi błędów z naszego testowego mapowania, wkleić je do mapowania "AirportStatus" i połączyć je z nowym ciałem odpowiedzi

Konfiguracja transformacji danych została teraz zdefiniowana z wieloma możliwościami wyjściowymi. Podczas ręcznego uruchamiania bezpośrednio w programie MapForce, użytkownik wybiera jedną z dostępnych opcji wyjściowych. Znaczenie ścieżki wykonania w przypadku obsługi błędów HTTP staje się jasne, gdy konfiguracja transformacji danych jest przeznaczona do automatycznego działania, kontrolowanego przez serwer MapForce Server lub w ramach regularnie planowanego zadania na serwerze FlowForce Server. Na przykład, automatyczna transformacja danych mogłaby raportować stan 50 różnych lotnisk co pół godziny.

Podczas automatycznego wykonywania przetwarzane są wszystkie ścieżki wyjściowe mapowania danych. Aby zapewnić, że usługa internetowa jest wywoływana tylko raz dla każdego wejścia, komponent pośredni przechwytuje wynik usługi internetowej przed przekazaniem go do ostatecznego celu. W przypadku wystąpienia jakiegokolwiek błędu HTTP, data, godzina oraz dokładny kod statusu HTTP zostaną zarejestrowane.

Obsługa błędów HTTP w mapowaniu danych w usługach internetowych REST jest jak pasy bezpieczeństwa lub gaśnica – coś bardzo przydatnego, ale mam nadzieję, że nie będzie trzeba jej używać!

Jeśli dopiero zaczynasz pracę z programem MapForce, zapoznaj się z tym filmikiem wprowadzającym. Możesz wypróbować MapForce samodzielnie, korzystając z bezpłatnej, 30-dniowej wersji próbnej.