Umgang mit HTTP-Fehlern bei der Datenzuordnung in Webdiensten
Datenintegrationsprojekte, die Informationen aus externen Webdiensten nutzen, können anfällig für HTTP-Fehler sein, wenn Daten von entfernten Quellen abgerufen werden. Wenn Datenzuordnungen automatisiert ablaufen, ist es besonders wichtig, Fehler zu erkennen und zu melden, selbst wenn diese nur sehr selten auftreten.
Eine MapForce-Datenzuordnung kann Web-Service-Aufrufe beinhalten und das Ergebnis direkt in eine Datei oder Datenbank ausgeben, oder es mit anderen Eingaben kombinieren, um es weiter zu verarbeiten. Unabhängig vom Endergebnis birgt ein HTTP-Webservice-Fehler, der bei einer REST-Webservice-Anfrage auftritt, ein Risiko für die Zuordnung.
MapForce bietet Funktionen zur Behandlung von HTTP-Fehlern, anstatt die Ausführung einer Transformation einfach abzubrechen. Entwickler können den Inhalt eines REST-Webservice-Aufrufs konfigurieren, um Ausnahmen basierend auf dem vom Server zurückgegebenen HTTP-Statuscode zu behandeln und zu protokollieren.
Schauen wir uns ein Beispiel an.

Die mit MapForce installierten Beispiel-Datenzuordnungen enthalten eine realitätsnahe Zuordnung für einen REST-Webdienst namens AirportStatus.mfd. Diese Zuordnung ruft einen Webdienst auf, der vom Federal Aviation Administration (FAA) unterstützt wird und Informationen über Betriebsverzögerungen an wichtigen US-Flughäfen bereitstellt. Die Eingabe für die Zuordnung ist ein dreibuchstabiger Flughafencode, der an den Webdienst übermittelt wird, und das Ergebnis wird als JSON-Datei zurückgegeben. Die Zuordnung und ein Beispielergebnis sind unten dargestellt.


Im Falle eines HTTP-Fehlers würde die Ausführung der Zuordnung fehlschlagen.
Die MapForce-Hilfedatei enthält eine Erklärung zur bedingten Verarbeitung von Antworten eines REST-Webdienstes. Wir könnten den Abschnitt zur Behandlung von HTTP-Fehlern einfach in die bestehende Zuordnung einfügen, aber wir hätten keine Möglichkeit, das Ergebnis im Falle eines HTTP-Fehlers zu überprüfen. Wir können den FAA-Webdienst nicht dazu zwingen, einen HTTP-Fehler für Testzwecke auszulösen!
Stattdessen können wir den Webdienst unter httpstat.us nutzen, um verschiedene HTTP-Statuscodes und -beschreibungen für Testzwecke zu generieren, und zwar in einer separaten Datenzuordnung. Beispielsweise gibt die URL https://httpstat.us/200 in einem Browserfenster "200 OK" zurück. Die URL https://httpstat.us/400 gibt "400 Bad Request" zurück, und so weiter für alle definierten Statuscodes bis 524.
Wir können eine REST-Anfrage für diesen Dienst in MapForce implementieren, indem wir einfach eine neue Mapping-Datei öffnen und auf die Schaltfläche "Webdienst einfügen" in der Symbolleiste klicken:

Dadurch öffnet sich das Dialogfenster "Einstellungen für den Web-Service-Aufruf", in dem wir die Einstellungen manuell konfigurieren können. Wir werden einen Parameter anstelle eines spezifischen Statuscodes verwenden, damit wir alternative Werte einfach testen können.

Hier ist die Zuordnung mit einer Konstanten, um den Code-Parameter zu übergeben:

Standardmäßig unterstützt eine Webdienstfunktion nur normale HTTP-Antwortcodes im Bereich von 200-299. Wir können die Unterstützung für andere Codes hinzufügen, indem wir mit der rechten Maustaste auf das Element "Body" im Bereich "Antwort" klicken, um den Dialog "Antwortstruktur" zu öffnen, und den Bereich der akzeptierten Statuscodes erweitern:

Wir können das Ergebnis der REST-Anfrage einer einfachen Textdatei zuordnen, indem wir die Funktion decode-mime-entity verwenden. Der Webdienst liefert den Zeichenkodierungsstandard nicht im Antwort-Header, daher verbinden wir den konstanten Wert "utf-8" mit der Dekodierungsfunktion.

Jetzt können wir die Schaltfläche "Ausgabe" am unteren Rand des Mapping-Bereichs in MapForce verwenden, um die Transformation durchzuführen und das Ergebnis zu überprüfen:

Wir können die Eingabekonstante im Zuordnungsbereich ändern und die Ausführung erneut starten, um die Unterschiede zu sehen:

Wir können eine Verkettungsfunktion verwenden, um das Ergebnis mit anderen Informationen zu kombinieren und so eine benutzerfreundlichere Statusmeldung zu erstellen


Sobald wir die Zuordnung mit einer Vielzahl möglicher HTTP-Statuscodes getestet haben und mit den Ergebnissen zufrieden sind, können wir die Fehlerbehandlung für HTTP in die bestehende Zuordnung für "AirportStatus.mfd" hinzufügen, und zwar durch eine Kopier- und Einfügeoperation. Zuerst erstellen wir einen neuen Antwortkörper in der "AirportStatus"-Zuordnung, um Antwortcodes außerhalb des normalen Bereichs zu verarbeiten. Wir können mit der rechten Maustaste auf das Element "Body" auf der Antwortseite des Webdienstes klicken, um einen neuen "Body"-Knoten hinzuzufügen.

Dadurch wird der neue Body hinzugefügt und das Dialogfenster "Antwortstruktur" geöffnet, in dem wir die Verarbeitung für alle HTTP-Statuscodes definieren können, die größer als 299 sind:

Jetzt können wir die Mapping-Komponenten unserer Fehlerbehandlungsdefinition von der Test-Mapping-Konfiguration kopieren, in die AirportStatus-Mapping-Konfiguration einfügen und den neuen Response-Body verbinden:

Die Zuordnung ist nun mit mehreren Ausgaben definiert. Bei manueller Ausführung direkt in MapForce wählt der Benutzer eine der Ausgaben aus. Die Bedeutung des Ausführungspfads für die Behandlung von HTTP-Fehlern wird deutlich, wenn die Zuordnung für die automatische Ausführung durch den MapForce Server oder in einem regelmäßig geplanten FlowForce Server-Job vorgesehen ist. Beispielsweise könnte eine automatisierte Datenzuordnung den Status von 50 verschiedenen Flughäfen alle halbe Stunde melden.
Während der automatisierten Ausführung werden alle Datenzuordnungs-Ausgabepfade verarbeitet. Um sicherzustellen, dass der Web-Dienst nur einmal für jede Eingabe aufgerufen wird, fängt eine Zwischenkomponente das Ergebnis des Web-Dienstes ab, bevor es zur endgültigen Zielstruktur zugeordnet wird. Falls ein HTTP-Fehler auftritt, werden das Datum, die Uhrzeit und der genaue HTTP-Statuscode protokolliert.
Die Behandlung von HTTP-Fehlern bei der Datenzuordnung in REST-Webdiensten ist wie ein Sicherheitsgurt oder ein Feuerlöscher: etwas sehr Nützliches, das man am besten hat, aber man hofft, es nie benutzen zu müssen!
Wenn Sie neu bei MapForce sind, schauen Sie sich diesen Einführungsvideo an. Sie können MapForce selbst mit einer kostenlosen 30-Tage-Testversion ausprobieren.