JSON Post Requests für einen FlowForce Web-Dienst

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

Startseite >  Beispiele zur Konfiguration von Aufträgen >

JSON Post Requests für einen FlowForce Web-Dienst

In diesem Beispiel wird gezeigt, wie Sie einen FlowForce Web-Dienst erstellen, der POST Requests, die im HTTP Request Body JSON-Daten enthalten, verarbeitet. Außerdem wird darin gezeigt, wie Sie den Web-Dienst von einem Client wie MapForce aus aufrufen können.

 

Der Web-Dienst erhält in diesem Beispiel laut Konfiguration JSON-Daten, Sie könnten aber für einen mit FlowForce Server erstellten Dienst auf ähnliche Weise wie unten gezeigt auch XML-Daten oder andere Inhalte bereitstellen. Der Web-Dienst wurde sehr einfach gehalten. Er erhält nur JSON-Daten und speichert diese ohne weitere Verarbeitung lokal. Der Auftrag kann auch erweitert werden, sodass die JSON-Daten mit RaptorXML Server validiert oder verarbeitet werden, dies ist aber nicht Thema dieses Beispiels.

 

In diesem Beispiel wird ein Fall gezeigt, in dem die Daten im Body des HTTP Request und nicht als Parameter übermittelt werden. Ein Beispiel, in dem ein Web-Dienst mit Parametern aufgerufen wird, finden Sie unter Bereitstellen eines Auftrags als Web-Dienst.

 

Voraussetzungen

Benötigte Lizenzen: FlowForce Server, MapForce Enterprise Edition.

 

Anmerkungen

FlowForce Server bietet eine schnelle Methode, den von MapForce aufgerufenen Web-Dienst zu erstellen. Die MapForce Enterprise Edition fungiert als Client, der den mit FlowForce Server erstellten Web-Dienst aufruft. Sie können dasselbe Ergebnis auch mit einem anderen Webclient erzielen.

 

FlowForce Server wird an der konfigurierten Netzwerkadresse und am konfigurierten Port ausgeführt (siehe Einstellen der Netzwerkadresse und des Ports).
Sie haben ein FlowForce Server-Benutzerkonto mit Berechtigungen für einen der Container (standardmäßig hat jeder authentifizierte Benutzer Zugriff auf den in diesem Beispiel verwendeten Container /public).
In diesem Auftrag werden vom Web-Dienst empfangene Input-Daten im lokalen Arbeitsverzeichnis C:\POST gespeichert. Dieses Verzeichnis (oder ein ähnliches) muss auf dem Rechner, auf dem FlowForce Server ausgeführt wird, vorhanden sein und ihr Betriebssystembenutzerkonto muss Schreibrechte für dieses Verzeichnis haben.

 

Erstellen des FlowForce-Auftrags

Melden Sie sich auf der Web-Verwaltungsoberfläche von FlowForce Server an, öffnen Sie den Container /public und klicken Sie auf Auftrag erstellen. Geben Sie als nächstes einen Namen und optional eine Beschreibung für den zu erstellenden Web-Dienst ein.

fs_post_json_01

Damit die POST-Daten im Auftrag als beliebiger Inhalt behandelt werden, muss der Auftrag genau einen Parameter vom Typ Stream haben. Klicken Sie, um den Parameter zu erstellen, auf Parameter hinzufügen add , geben Sie einen Parameternamen ein (in diesem Beispiel "data") und wählen Sie als Datentyp Stream aus.

fs_post_json_02

Fügen Sie als nächstes einen neuen Ausführungsschritt hinzu und konfigurieren Sie ihn folgendermaßen:

fs_post_json_03

Im oben gezeigten Ausführungsschritt wird die vordefinierte FlowForce-Funktion copy aufgerufen. Der Ausdruck im Textfeld "Quelle" konvertiert den vom Web-Dienst empfangenen Input mit Hilfe der Ausdrucksfunktion as-file in eine Datei (denken Sie daran, dass der Input-Parameter im vorherigen Schritt data genannt wurde). Um diesen Ausdruck automatisch zu erhalten, klicken Sie neben dem Textfeld "Quelle" auf die Schaltfläche ff_ic_set_to und wählen Sie data aus.

 

Das Textfeld "Ziel" enthält einen Ausdruck, der bei jeder Ausführung des Auftrags einen eindeutigen Dateinamen erzeugt. Zu diesem Zweck wird die FlowForce-Ausdrucksfunktion instance-id aufgerufen. Der Name der JSON-Datei sieht also ungefähr folgendermaßen aus "file35.json", wobei bei jeder Auftragsausführung eine andere Nummer generiert wird (Die Nummer entspricht der ID dieser FlowForce-Auftragsinstanz). Sie könnten auch einen vollständigen Dateipfad eingeben, dies ist jedoch nicht notwendig, wenn der "Arbeitsverzeichnis"-Pfad wie in diesem Beispiel definiert wurde. Wenn Sie den Pfad zum Arbeitsverzeichnis definieren, werden alle relativen Dateinamen relativ zum Pfad des Arbeitsverzeichnisses aufgelöst.

 

Das Verzeichnis C:\POST (oder ein ähnliches, wenn Sie den Pfad geändert haben) muss vorhanden sein und Ihr Betriebssystembenutzer muss Schreibrechte dafür haben.

 

Aktivieren Sie unter "Dienst" das Kontrollkästchen Diesen Auftrag über HTTP zur Verfügung stellen und geben Sie für den neuen Web-Dienst "POST_JSON" oder einen ähnlichen Namen ein.

fs_post_json_04

Wählen Sie unter "Anmeldeinformationen" einen vorhandenen Anmeldeinformationen-Eintrag aus oder definieren Sie lokale Anmeldeinformationen (siehe auch Anmeldeinformationen). Es müssen die Anmeldeinformationen des Benutzerkontos auf dem Betriebssystem, auf dem FlowForce Server ausgeführt wird, sein.

fs_deploy_mapping_05

Anmerkung:Diese Anmeldeinformationen sind nicht mit denen zu verwechseln, die Sie benötigen, um die FlowForce Server Web-Verwaltungsschnittstelle aufzurufen.

 

Klicken Sie auf Speichern. Der Web-Dienst kann nun von einem Client aus aufgerufen werden.

 

Aufruf des Web-Diensts über einen Browser

Um den Web-Dienst zu testen, können Sie ihn in einem ersten Schritt über den Browser aufrufen. Gehen Sie dazu folgendermaßen vor:

 

1.Öffnen Sie einen Webbrowser und geben Sie in die Adresszeile die folgende URL ein:

 

http(s)://[FlowForceServer]:[Port]/service/POST_JSON

 

Wenn Sie den FlowForce Server Host und Port nicht geändert haben, so lautet diese standardmäßig http://localhost:4646/service/POST_JSON. Ersetzen Sie andernfalls [FlowForceServer] und [Port] durch die Einstellungen, die auf der FlowForce Setup-Seite konfiguriert wurden, siehe Definieren der Netzwerkeinstellungen. Wenn Sie als Web-Dienste bereitgestellte FlowForce Server-Aufträge mit Internet Explorer testen, müssen Sie eventuell  auf dem Register "Erweitert" die Option "Kurze HTTP-Fehlermeldungen anzeigen" deaktivieren.

 

2.Wenn Sie aufgefordert werden, die Anmeldeinformationen anzugeben, geben Sie Ihre FlowForce Server-Anmeldeinformationen ein.

 

Dies dient nur zum Testen des Web-Diensts und sollte nicht in einer Produktionsumgebung getan werden. Es wird empfohlen, einen neuen FlowForce-Benutzer zu erstellen, diesem Benutzer im Container, in dem sich der Auftrag befindet, die Berechtigung Dienst - Verwenden einzuräumen und den Web-Dienst anschließend über das entsprechende Benutzerkonto aufzurufen. Um die HTTP-Authentifizierung zu deaktivieren und den Web-Dienst öffentlich zugänglich zu machen, räumen Sie dem Benutzer Anonymous die Berechtigung Dienst - Verwenden ein, siehe Funktionsweise von Berechtigungen.

 

3.Klicken Sie auf Datei auswählen und wählen Sie die JSON-Datei aus, die im POST Request übermittelt werden soll.

fs_post_json_05

4.Klicken Sie auf Senden. FlowForce Server verarbeitet den Auftrag und gibt die Response im Browser aus.

 

Wenn der Auftrag erfolgreich ausgeführt werden konnte, wird im Browser "true" angezeigt und die JSON-Datei wird im Arbeitsverzeichnis C:\POST gespeichert. Falls jedoch ein Ausführungsfehler angezeigt wird, finden Sie im Auftrags-Log nähere Informationen dazu, siehe Anzeige des Auftrags-Logs.

 

Aufrufen des Web-Diensts von MapForce aus

Sie können den Web-Dienst auch von einem anderen Client als dem Webbrowser aus aufrufen, z.B. von der MapForce Enterprise Edition.

 

1.Klicken Sie im Menü Datei auf Neu, um ein neues Mapping zu erstellen.
2.Klicken Sie im Menü Einfügen auf Webservice-Funktion. Daraufhin wird das Dialogfeld "Webservice-Call-Einstellungen" aufgerufen.
3.Klicken Sie auf Manuell, wählen Sie als Request-Methode POST aus und geben Sie die URL des Web-Diensts in das Feld "URL" ein. Es handelt sich hierbei um dieselbe URL, mit der Sie den Web-Dienst über den Browser getestet haben.

fs_post_json_06

4.Klicken Sie neben "HTTP-Sicherheitseinstellungen" auf die Schaltfläche Bearbeiten und geben Sie die Anmeldeinformationen zum Aufruf des Web-Diensts ein.

fs_post_json_07

Anmerkung:Wenn Sie die Anmeldeinformationen über das Mapping bereitstellen möchten, anstatt sie in diesem Dialogfeld zu speichern, aktivieren Sie das Kontrollkästchen Dynamische Authentifizierung. Dadurch werden die Anmeldeinformationen während der Ausführung des Mappings interaktiv als Input-Parameter für das Mapping bereitgestellt.

 

5.Klicken Sie auf OK, um das Dialogfeld zu schließen. Das Mapping sieht nun folgendermaßen aus:

fs_post_json_08

6.Fügen Sie mit dem Menübefehl Einfügen | Input-Komponente einfügen eine einfache Input-Komponente mit den JSON-Daten zum Mapping hinzu. Geben Sie außerdem, wie unten gezeigt, JSON-Beispieldaten ein, die für die Ausführung dieses Mappings zur Design-Zeit verwendet werden sollen:

fs_post_json_09

Anmerkung:Die hier gezeigten JSON-Beispieldaten sind sehr kurz und dienen nur zu Demozwecken. Wenn das Mapping über MapForce Server ausgeführt wird, können Sie die JSON-Daten aus einer tatsächlichen JSON-Datei als Input-Daten für das Mapping bereitstellen.

 

7.Fügen Sie mit dem Menübefehl Einfügen | Output-Komponente einfügen die Output-Komponente zum Mapping hinzu

fs_post_json_10

8.Ziehen Sie die Funktionen charset-encode und mime-entity aus dem Fenster "Bibliotheken" in den Mapping-Bereich und ziehen Sie die Verbindungen, wie unten gezeigt. Außerdem müssen Sie mit dem Menübefehl Einfügen | Konstante zwei Konstanten hinzufügen.

fs_post_json_11

Webservice-Aufruf mit unstrukturiertem Body

Im obigen Mapping wird der JSON-Input über eine einfache Input-Komponente für das Mapping bereitgestellt. Die Funktionen charset-encode und mime-entity sind vordefinierte MapForce-Funktionen, die den Body das HTTP Request vorbereiten. Der vom Web-Dienst zurückgegebene Statuscode wird auf das vom Mapping zurückgegebene Ergebnis gemappt.

 

Den Body des HTTP Request, wie oben gezeigt, unstrukturiert vorzubereiten, ist nur eine der Möglichkeiten, um Daten im POST Request zu übermitteln. Bei JSON- und XML-Strukturen können Sie das JSON- oder XML-Schema des Request stattdessen im Dialogfeld "Webservice-Call-Einstellungen" definieren. In diesem Fall werden für den Body der Webservice-Komponente Mapping-Inputs (Konnektoren) auf Basis der JSON/XML-Struktur des Request bereitgestellt.

 

Durch Klicken auf das Register Ausgabe können Sie das Mapping nun mit MapForce ausführen. Wenn es zu einem Fehler kommt, wird dieser im Fenster "Meldungen" angezeigt. Um den Fehler zu beheben, müssen Sie eventuell auch das FlowForce Server Log überprüfen (vorausgesetzt der POST Request hat den Server überhaupt erreicht). Falls die Ausführung erfolgreich war, geschieht Folgendes:

 

1.Im Fenster Ausgabe wird der HTTP-Statuscode "200" angezeigt.
2.Auf der Seite des Servers werden die gesendeten JSON-Daten in eine Datei geschrieben und im Verzeichnis C:\POST gespeichert.

 

In MapForce können Sie genau konfigurieren, was im Mapping geschehen soll, wenn ein Fehler auftritt. Das Mapping kann auch mit  MapForce Server ausgeführt oder auf FlowForce Server als Auftrag oder sogar weiterer Webservice bereitgestellt werden. Nähere Informationen dazu finden Sie in der MapForce-Dokumentation https://www.altova.com/de/documentation.


© 2019 Altova GmbH