Umgang mit HTTP-Fehlern während der automatisierten Datenintegration

Datenanalysten und andere Fachleute benötigen oft die Möglichkeit, Echtzeitdaten zu generieren, indem sie Datenabfragen automatisiert ausführen, die Webdienste nutzen und die Ergebnisse speichern. Während der automatisierten Ausführung ist es wichtig, unerwartete HTTP-Fehler auf elegante Weise zu behandeln, anstatt die Integrationsaufgabe abzubrechen.

In einem früheren Beitrag haben wir die bedingte Verarbeitung einer Antwort eines REST-Webdienstes zur Behandlung von HTTP-Fehlern besprochen, wobei separate Ausgabedateien für eine normale Antwort und einen Fehler generiert wurden. Betrachten wir nun eine überarbeitete Mapping-Lösung für das Beispiel des Flughafenzustands, um eine einzelne Mapping-Ergebnisdatei zu erstellen, die entweder den angeforderten Flughafenzustand oder eine Beschreibung des Fehlers enthält.

Eine Strategie, um ein einzelnes Ergebnis zu erzielen, wäre es, jede Ausgabedatei, die in unserer früheren MapForce-Zuordnung erstellt wurde, als eine Zwischenkomponente zu behandeln und diese dann in ein endgültiges Ergebnis zu überführen, das beide möglichen Ergebnisse berücksichtigt.

Eine einfachere Lösung besteht darin, eine normale Antwort und ein Fehlerergebnis direkt in ein einzelnes Ausgabekomponente zu integrieren.

Nachdem wir unseren vorherigen Beitrag veröffentlicht hatten, haben wir festgestellt, dass der Web-Dienst zur Abfrage des Flughafenzustands der FAA einen Fehler zurückgibt, wenn das Feld für den Flughafencode leer ist. Dies führt zu einem HTTP-Fehler 404. Leider wird das Ergebnis des Web-Dienstes im Fehlerfall im HTML-Format und nicht im JSON-Format zurückgegeben, obwohl dies in der Anfrageüberschrift angegeben ist

Wir können einen HTML-Fehler vermeiden, indem wir direkt anhand des Statuscodes, der in der Antwort zurückgegeben wird, feststellen, ob ein Fehler vorliegt

Zunächst müssen wir einen Eintrag zum JSON-Schema für die Zielkomponente hinzufügen, um eine Fehlermeldung im Fehlerfall speichern zu können. Dies lässt sich einfach mit dem grafischen JSON-Schema-Editor von XMLSpy erreichen:

Im Hilfefenster "Details" ist die Option "Vorkommen" auf "Optional" eingestellt, da dieses Element nur im Falle eines HTTP-Fehlers generiert wird.

Jetzt können wir eine benutzerdefinierte Fehlermeldung erstellen, die auf jedem HTTP-Statuscode größer als 200 basiert:

Die oben genannte concat-Funktion enthält den Statuscode und den Flughafencode, um eine vollständige Beschreibung von Fehlern zu erstellen.

Hier ist eine vollständige Darstellung der überarbeiteten Zuordnung, die den Pfad des Statuscodes zum Ausgabekomponenten verfolgt:

Wir können den Flughafencode in der Konstanten oben links in der Karte bearbeiten und dann auf die Schaltfläche "Ausgabe" unterhalb des Hauptfensters der Karte klicken, um verschiedene Eingabewerte zu testen. Wenn ein gültiger Flughafencode in der GET-Anfrage an den Webdienst enthalten ist, ist das Ergebnis die JSON-Datei, die wir erwarten:

Wir können einen HTTP-Fehler erzeugen, indem wir eine leere Zeichenkette als Wert für den Konstanten, der den Flughafencode enthält, senden. Dies erzeugt eine Fehlerantwortdatei im JSON-Format:

Bitte beachten Sie, dass unsere Zuordnung weiterhin separate Antwortkörper für HTTP-Statuscodes von 200 bis 299 und für Codes von 300 bis 599 verwendet. Dies stellt sicher, dass nur gültige JSON-Ergebnisse für die Ausgabe verarbeitet werden. Fehlerergebnisse, die im HTML-Format empfangen werden, werden nicht verarbeitet. Sie werden einfach verworfen.

Automatisieren Sie die Datenzuordnung und behandeln Sie HTTP-Fehler

In unserem vorherigen Beitrag haben wir ein Automatisierungsszenario beschrieben, bei dem wir regelmäßig den Status von 50 Flughäfen überprüfen und protokollieren möchten. Um dies zu erreichen, müssen wir den Web-Dienst aufrufen und die Ergebnisse für jeden einzelnen Flughafencode verarbeiten.

Die ursprüngliche Beispielzuordnung ist bereits unter Berücksichtigung der Automatisierung konzipiert. MapForce Server ist ein plattformübergreifendes Server-Tool, das die Ausführung von Datenzuordnungen, die in MapForce erstellt wurden, automatisiert Das Element links oben in der Zuordnung, das auf die Zeichenkette folgt, ist ein Eingabeparameter, der zur Laufzeit bereitgestellt werden kann, um von MapForce Server ausgeführt zu werden.

Der String "PHX" im Screenshot wird nur während der direkten Ausführung in MapForce verwendet.

FlowForce Server ist eine hochgradig anpassbare Workflow-Engine zur effizienten Automatisierung von Datenintegrationsaufgaben im Unternehmensbereich. Ein FlowForce Server-Job kann die Zuordnung mithilfe von MapForce Server einmal für jeden benötigten Flughafencode ausführen und diese Aufgabe in regelmäßigen Abständen wiederholen. Der automatisierte Job behandelt HTTP-Fehler, indem er Ergebnisdateien erstellt, die entweder den aktuellen Status oder eine Beschreibung des Fehlers für jeden Flughafencode enthalten.

Wenn Sie neu bei MapForce sind, schauen Sie sich diesen Video-Überblick an, um eine Einführung in die vielfältigen Funktionen zur Datenkonvertierung und -integration zu erhalten. Sie können MapForce, MapForce Server und FlowForce Server selbst mit einer kostenlosen 30-Tage-Testversion ausprobieren.