Behandlung der HTTP Response auf Basis von Bedingungen

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Aufrufen von Webservices > Hinzufügen eines Webservice-Aufrufs (REST) >

Behandlung der HTTP Response auf Basis von Bedingungen

Angenommen, ein Webservice gibt im Response Body abhängig vom Wert des Accept HTTP Request Headers entweder einen JSON- oder einen XML-Inhaltstyp zurück. Zusätzlich dazu gibt der Webservice im Fall eines Fehlers (Fehlercode > 299) eventuell einen nicht definierten Inhaltstyp zurück. In einem solchen Fall ist es unter Umständen sinnvoll, die Response anhand des HTTP-Statuscodes und Inhaltstyps auf Basis von Bedingungen zu behandeln.

 

Um im selben Mapping sowohl die JSON- als auch die XML-Response des Webservice zu behandeln, könnten Sie mehrere Body-Datenelemente erstellen. Klicken Sie dazu mit der rechten Maustaste in der Komponente auf das Body-Datenelement und wählen Sie im Kontextmenü den Befehl Body-Node hinzufügen nach.

 

Eine Webservice-Komponente mit mehreren für das obige Szenario konfigurierten Body-Datenelementen könnte im Mapping folgendermaßen aussehen:

mf_ws_conditional_body_04

Das oben gezeigte Mapping erhält zwei Input-Parameter. Er erste Parameter liefert den erwarteten Inhaltstyp. Sein Wert kann application/json oder application/xml sein. Der zweite Parameter liefert die numerische ID des abzurufenden Produkts.

 

Wenn Sie den Wert application/json als Input-Parameter bereitstellen, klicken Sie auf die Schaltfläche Vorschau ic-preview-buttondown der JSON-Zielkomponente. Wenn der Wert des Input-Parameters hingegen application/xml ist, klicken Sie auf die Schaltfläche Vorschau ic-preview-buttondown der XML-Zielkomponente. Die jeweilige Ausgabedatei (JSON oder XML) wird generiert, wenn der Webservice-Aufruf erfolgreich war.

 

Wenn der Webservice einen Statuscode großer als 300 (Fehler) zurückgibt, gelangt die HTTP Response zum dritten Body-Datenelement. Da wir den genauen Inhaltstyp nicht kennen, werden wir ihn mit Hilfe der Funktion decode-mime-entity dekodieren. Der Wert des Zeichensatzes wird vom Webservice im Response Header nicht bereitgestellt, daher wurde der Konstantenwert utf-8 mit der Dekodierungsfunktion verbunden.

 

Jedes der drei Response Body-Datenelemente in der obigen Komponente wird durch Klick auf die Schaltfläche excel1-compicon neben dem jeweiligen Body-Element konfiguriert.

 

1.Im ersten Body-Element wird als application/json zurückgegebener Inhalt behandelt, wenn der Statuscode zwischen 200 und 299 liegt. Außerdem wurde das Schema der erwarteten JSON Response-Struktur definiert.

mf_ws_conditional_body_01

2.Im zweiten Body-Element wird als application/xml zurückgegebener Inhalt behandelt, wenn der Statuscode zwischen 200 und 299 liegt. Außerdem wurde das Schema der erwarteten XML Response-Struktur definiert.

mf_ws_conditional_body_02

3.Im dritten Body-Element wird als */* zurückgegebener Inhalt behandelt, wenn der Webservice einen Fehler-Statuscode (zwischen 300 und 599) zurückgibt.

mf_ws_conditional_body_03


© 2019 Altova GmbH