Taschenrechner via POST-Methode mit JSON-Ein- und Ausgabe

In diesem Beispiel bauen Sie einen Taschenrechner-Webservice, der die 4 Grundrechenarten beherrscht, wobei nur Ganzzahlen unterstützt werden. Die Daten, also zwei Operanden und der Operator, werden innerhalb einer JSON-Datei im Body eines POST-Requests übergeben.

Erstellen Sie dazu bitte eine simple JSON-Datei. Hier ein Beispiel anhand einer Additions-Operation:


Eingang
{
"OP1": 42,
"OP2": 24,
"OPR": "+"
}
Ausgang
{
"RESULT": 66
}


Die Objekte OP1 und OP2 bekommen die Ganzzahlwerte, mit denen Sie rechnen wollen. Die Rechenoperationen PLUS (+), MINUS (-), MAL (x), GETEILT (/) werden in dem Objekt OPR übergeben.

Die Antwort soll ebenfalls im Body zurückkommen mit dem HTTP-Status 200 im Erfolgsfall und dem HTTP-Status 500 im Fehlerfall.

Schritt 1 - Profil anlegen


Gerne können Sie das vorangegangene Profil klonen, da Sie ein paar Konfigurationen übernehmen können, z. B. die dynamische Antwort in Phase 1 und 6.

Bitte aktivieren Sie in den Basis-Daten das Mapping und wählen die Dokumentenart JSON mit Zeichenkodierung UTF-8. Passen Sie den Namen des Profils an, z. B. Lobster_Tutorial_HTTP_calculator_json_body.


images/download/attachments/137305186/bsp2_basis-version-1-modificationdate-1686289379330-api-v2.png

Schritt 2 - Eingangseinstellungen anpassen


In Phase 1 verwenden Sie den eventgesteuerten Eingangsagenten des Typs HTTP mit folgenden Einstellungen:


  • URL-Adressen-Suffix: calculator_json_body

  • Methode: POST (akzeptiert keinen leeren Body).

  • Die Antwort wird wieder durch eine eigene Klasse gesendet.

  • HTTP-Code im Fehlerfall lautet 500.

  • Es gibt keine Zugangskontrolle und keine Parameter.

  • Phase 2 wird nicht editiert.


images/download/attachments/137305186/bsp2_phase1-version-1-modificationdate-1686289379407-api-v2.png


In diesem Profil lautet die Adresse des HTTP-POST-Requests http://<Server>/dw/Request /calculator_json_body , gefolgt von dem Body der Anfrage.

Schritt 3 - Mapping


Erstellen Sie einen Top-Level-Knoten in der Quellstruktur mit einem beliebigen Namen, z. B. input (der Knoten benötigt keine Satzarterkennung).

Darunter fügen Sie drei Felder auf gleicher Ebene hinzu: OP1, OP2 und OPR. Die Namen bilden sich aus den JSON-Elementen. Die Felder benötigen eine Satzarterkennung, die auf Gleichheit der Feldnamen und Objekte innerhalb des JSON prüft.

Die Zielstruktur besitzt nur einen Knoten, z. B. Output, mit einem Feld darunter, z. B. RESULT.


images/download/attachments/137305186/bsp2_phase3-version-1-modificationdate-1686289379421-api-v2.png


Auf diesem Feld ist die ganze Logik untergebracht, welche mittels folgender Funktionen erstellt wird:


RESULT:

1. save variable type-safe

a Variable: var__result // Die Variable muss den Typ "Integer" haben
b Quellfeld: OP1

2. calculate and save variable

a Variable: var__result
b Quellfeld: OPR
c Quellfeld: OP2
d (leer lassen)
e (leer lassen)


Die Verwendung der Funktion calculate and save variable hat den Vorteil, dass Sie den "Wert", also das Zeichen für die Rechenoperation, direkt verwenden können.

Schritt 4 - Konfiguration der Integration Unit


Hinweis: Die JsonCreationUnit ist ab der Version 4.6 auf deprecated gesetzt worden. Bitte nur noch die ExtendedJsonCreationUnit verwenden!


Für die Ausgabe benötigen Sie die JsonCreationUnit:


images/download/attachments/137305186/bsp2_phase5-version-1-modificationdate-1686289379432-api-v2.png


Um das angestrebte Format zu erhalten, müssen Sie die Parameter Force array creation... und Write top level nodes as objects auf false setzen.

Schritt 5 - Antwortweg in Phase 6


Als Antwortweg verwenden Sie die Klasse - PassBackDataResponse. Der Inhalt der Ausgabedatei wird mittels der JsonCreationUnit aufgebaut.


images/download/attachments/137305186/bsp2_phase6-version-1-modificationdate-1686289379441-api-v2.png

Schritt 6 - Triggern des Profils


Zum Starten des Profils können Sie auf das Tool Postman zurückgreifen. Legen Sie hierzu einen neuen Request an:


  • Request name - Geben Sie dem Request einen sprechenden Namen, dafür müssen Sie im Request auf "Abspeichern" gehen.

  • New Collection - Erstellen Sie eine neue "Collection", in der Sie den Request ablegen können.

  • Wählen Sie die Methode POST.

  • Geben Sie die URL ein: http://<Server>/dw/Request /calculator_json_body

  • Fügen Sie den Body hinzu als raw und kopieren Sie die JSON-Datei.

  • SEND.

  • Das Ergebnis erhalten Sie im Body der Response.


Im Control Center in der Log-Übersicht finden Sie den Job zu dem gelaufenen Profil.