HTTP-Tutorial - Phase 3 verwenden

Im Bereich des Mappings stehen Ihnen zahlreiche Möglichkeiten zur Verfügung, um auf externe Ressourcen via HTTP zuzugreifen.

Funktion "http"


Mit der Funktion können Sie ähnlich wie in Phase 6 einen HTTP-Request konfigurieren und absetzen. Im Unterschied zu Phase 6 steht Ihnen die Response unmittelbar zur Verfügung, da diese in einer Map abgelegt wird. Somit können Sie die Aufgabe aus Beispiel 5 in der Phase 3 lösen. Zur Generierung der JSON-Struktur verwenden Sie die Funktion create json from node.

Funktion "http json-lookup"


Mit dieser Funktion kann per HTTP-Request eine JSON-Datei als gesamtes Objekt oder daraus gezogene einzelne Objekte via XPath-Ausdrücken eingelesen werden.

Funktion "call SOAP-WebService"


Diese Funktion steht in zwei Ausprägungen zur Verfügung für Webservices, die aus dem Mapping ohne und mit einer Vorlagendatei aufgerufen werden sollen.

Im folgenden wird ein HTTP-Aufruf in Phase 3 erstellt und als Dateityp JSON verwendet. Erstellen Sie ein neues Profil:


  • Dokumentenart: CSV

  • Mapping-Art: Daten-Routing

  • Phase 1: Eventbasierter Eingangsagent Manuelles Hochladen.

  • Phase 3 - In der Zielstruktur erstellen Sie einen Top-Level-Knoten und darunter ein Feld createJSON mit der Funktion concat(a,b,c,d...), um den Inhalt eines simplen JSON zusammenzusetzen:


Funktion - concat
createJSON
 
concat(a,b,c,d,e,f,g,h, [CR-support i])
a Wert: { "OP1":
b Wert: 42
c Wert: , "OP2":
d Wert: 24
e Wert: , "OPR": "
f Wert: +
g Wert: " }
h Wert:
i Wert:


Die Berechnungswerte 42 und 24, sowie der Operator, können zum Testen fix angegeben oder alternativ dynamisch einer Datenbank oder Variablen entnommen werden.

Für komplexe Strukturen, die bei JSON und XML durchaus üblich sind, empfehlen wir diese in der Zielstruktur aufzubauen. Die Generierung der Datei wird den Funktionen create json from node für JSON bzw. create xml from node für XML überlassen.

Ist die zu übertragenden Struktur erstellt, muss diese an das Zielsystem gesendet werden. Dazu wird die http-Funktion verwendet, die Sie in einem Berechnungsfeld hinterlegen.


Funktion - http
calc_callhttp
 
http(a,b,c,d,e,f,g,h,i,j,k,l,m,n)
a Wert: https://[TARGET-URL]
b Wert:
c Wert:
d Zielfeld: createJson
e Wert:
f Wert: application/json
g Wert: POST
h Wert:
i Wert:
j Wert:
k Wert:
l Wert:  map_result_http
    m Wert:
n Wert:


  • In Parameter a hinterlegen Sie die Zieladresse, also bspw. https://<Server>/dw/Request/calculator_json_body

  • Das JSON, als übertragener Inhalt für Parameter d, wurde hier im Zielstrukturfeld createJSON erzeugt.

  • Der Parameter f verlangt den MIME-Type.

  • Definieren Sie für Parameter g die verwendete Methode, hier POST.

  • Parameter l verlangt den Namen einer Map, in welcher die Antwort nebst wichtigen Metadaten, wie z. B. dem Status, gespeichert wird.


images/download/attachments/137306105/phase3_soap-version-1-modificationdate-1686897935255-api-v2.png


Führen Sie durch Hochladen einer beliebigen Testdatei einen Mapping-Test durch und der Service sollte aufgerufen werden.

Um nun das Ergebnis im Erfolgsfall in Phase 3 zu verwenden, JSON-Struktur { "RESULT": "66" }, muss dieses über den Map-Schlüssel RESPONSE_HTTP_DATA geholt werden. Folgende Funktionskette zeigt beispielhaft, wie das gewünschte Ergebnis aus der Antwort ausgelesen und z. B. in einer Variablen var__result abgelegt wird.


getResult
getResult
 
get value from map(key a, name of map b, delimiter c, item d, [default e])
a Wert: RESPONSE_HTTP_DATA
b Wert: map_result_http
c Wert:
d Wert:
e Wert:
 
parse json and add to cache(data a, key b)
a Ergebnis: 1
b Wert: json-data
 
execute json xpath(key a, expression b, array as text c, ignore exception d)
a Wert: json-data
b Wert: $[*].RESULT
  c Wert: true
d Wert:
 
save variable a(b) type-safe
a Wert: var__result
b Ergebnis: 3
 
remove parsed json from cache(key a)
a Wert: json-data


Hier wurde das Ergebnis aus der Map get value from map zuerst mit der Funktion parse json and add to cache in eine interne Struktur überführt. Mittels der Folgefunktion execute json xpath kann gezielt auf Feldebene via XPath ein Objekt abgefragt werden. Damit die interne Struktur nicht im Speicher liegen bleibt und Ressourcen vergeudet, wird diese mit der Funktion remove parsed json from cache wieder entfernt.


images/download/attachments/137306105/phase3_2_soap-version-1-modificationdate-1686897935270-api-v2.png


Dieses Beispiel lässt sich auch mit einer einzigen Funktion http json-lookup(a,b,c,d,e,f,g,h,i,j,k,l,m), wie oben beschrieben, aufbauen.