---
title: "Obsługa błędów HTTP w mapowaniach danych usług internetowych"
date: "2019-06-19"
categories: 
  - "data-integration"
  - "tools"
tags: 
  - "data-mapping"
  - "flowforce-server"
  - "http-testing"
  - "mapforce"
  - "mapforce-server"
  - "web-services"
description: Odkryj, jak radzić sobie z błędami HTTP w mapowaniu danych w usługach internetowych za pomocą narzędzia MapForce, aby zapewnić solidną integrację danych i efektywne raportowanie błędów w zautomatyzowanych projektach.
---
Status: #blog

Tags:  #data-mapping #flowforce-server #http-testing #mapforce #mapforce-server #web-services

Categories: [data-integration](/blog/pl/category/data-integration.md) | [development](/blog/pl/category/development.md)
# 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.

![](/blog/images/cbcr_blog_2.jpg)

<!--more-->

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.

[![Mapowanie danych usług internetowych bez uwzględnienia obsługi błędów HTTP](/blog/images/airport-status-mapping.png)](airport-status-mapping.png)

[![Plik JSON wygenerowany na podstawie przykładowej konfiguracji mapowania](/blog/images/mapping-result.png)](mapping-result.png)

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](https://httpstat.us/200) w oknie przeglądarki zwraca komunikat "200 OK". Adres URL [https://httpstat.us/400](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:

![Dodawanie funkcji usługi internetowej do mapowania danych](/blog/images/insert-web-service-function.png)

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.

[![Konfiguracja ustawień wywołań usługi internetowej](/blog/images/web-service-call-settings.png)](web-service-call-settings.png)

Oto odwzorowanie, które pozwala na przekazanie stałej jako parametru kodu:

[![Usługa internetowa z parametrem wejściowym wykorzystywanym w mapowaniu danych](/blog/images/mapping-1.png)](mapping-1.png)

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:

[![Obsługa błędów HTTP poprzez rozszerzenie zakresu obsługiwanych kodów statusu](/blog/images/response-structure.png)](response-structure.png)

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.

[![Obsługa błędów HTTP poprzez mapowanie odpowiedzi na wiadomość zapisaną w formacie tekstowym](/blog/images/mapping-2.png)](mapping-2.png)

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

![Pierwszy wynik testu dla wiadomości mapującej](/blog/images/result-1.png)

 Możemy zmienić stałą wejściową w panelu mapowania i ponownie uruchomić proces, aby zobaczyć różnicę

![Drugi wynik testu dla wiadomości mapowania](/blog/images/result-2.png)

Możemy użyć funkcji `concat`, aby połączyć wynik z innymi informacjami i stworzyć bardziej czytelny komunikat statusu dla użytkownika:

[![Definicja bardziej kompleksowego wyniku komunikacji](/blog/images/elaborate-message.png)](elaborate-message.png)

![Bardziej czytelny komunikat nawigacyjny](/blog/images/result-3.png)

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".

![Obsługa błędów HTTP z użyciem oddzielnego tekstu odpowiedzi](/blog/images/add-body-node.png)

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:

![Obsługa błędów HTTP poprzez określenie zakresu kodów statusu](/blog/images/response-structure-2.png)

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

[![Obsługa błędów HTTP w mapowaniu danych w usłudze internetowej REST](/blog/images/copy-error-handling.png)](copy-error-handling.png)

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](https://www.altova.com/pl/mapforce-server) lub w ramach regularnie planowanego zadania na serwerze [FlowForce Server](https://www.altova.com/pl/flowforceserver). 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](https://youtu.be/a83na6G9FjI). Możesz wypróbować MapForce samodzielnie, korzystając z [bezpłatnej, 30-dniowej wersji próbnej](https://www.altova.com/pl/mapforce/download).
