Nutzen Sie REST-Dienste mit nativen Microflow-Aktionen
- 29. Juni 2016
- Minute gelesen
Mendix 6.6 enthält eine wichtige neue Funktion, die Ihnen beim Aufrufen von REST-Diensten und beim Verarbeiten von Daten hilft. Es war ursprünglich für Mendix 7, aber da unsere Community von dieser Funktion so begeistert ist, haben wir beschlossen, sie jetzt zu veröffentlichen!
Mit unserer neuen Version können Sie REST-Dienste mit einer neuen Microflow-Aktion aufrufen. Da REST-Antworten häufig im JSON-Format vorliegen, haben wir unsere Datenzuordnungsdokumente erweitert, um sowohl JSON als auch XML verarbeiten zu können.
REST und das Internet
Die Idee hinter REpresentational State Transfer (REST) ist der ursprünglichen Architektur des Internets sehr ähnlich: dem HyperText Transfer Protocol (HTTP). HTTP wurde entwickelt, um Inhalte von einem Server an einen Client und umgekehrt zu übertragen. In den Anfangstagen waren die Inhalte oft textuell und in HTML-Form (HyperText Markup Language). Die Inhalte wurden auf einem Server gespeichert und eindeutig durch eine Adresse identifiziert: eine URL (Universal Resource Locator). Wenn Sie beispielsweise die URL in einen Browser eingeben, können Sie eine Webseite aufrufen. Oder Sie können Daten an eine URL senden, wenn Sie eine Datei auf einen Server hochladen.
Wenn Sie diese anfängliche Idee verallgemeinern, können Sie die Bedeutung von REST verstehen. Es gibt 6 wesentliche Elemente:
- Staat. Dies ist eine Ressource auf einem Server, die in einem internen Format gespeichert ist. Beispiel: Produktdaten in einer Datenbank.
- Vertretung. Nicht alle Daten auf dem Server sind relevant. Oft müssen sie gefiltert und in einem allgemeinen Format übermittelt werden, das der Client verstehen kann. Eine Darstellung der Daten wird über das Internet gesendet. Einige gängige Darstellungen sind XML, JSON, HTML oder Binärdaten wie ein Bild oder eine PDF-Datei.
- URL. Eindeutige Adresse einer Ressource.
- Methodik. Ein Textverb in einer HTTP-Anforderung, um anzugeben, was Sie mit der Ressource tun möchten. Beispiel:
GETeine Ressource,POSTeine neue Ressource,PUTeine aktualisierte Ressource,PATCHeine Ressource, um kleine Änderungen vorzunehmen oderDELETEeine Ressource. Dieses Verb wird in der HTTP-Nachricht wörtlich angegeben. - Headers. HTTP-Header geben einer Nachricht zusätzliche Informationen. Zum Beispiel:
Content-Type: application/jsongibt an, dass die Darstellung der Nachricht im JSON-Format erfolgt. - Statuscode. Eine einfache Zahl, die einer HTTP-Antwortnachricht hinzugefügt wird. Zum Beispiel: 200 bedeutet OK, 404 bedeutet
Resource not found.
Beispiel: Zoohandlung
Ein einfaches Beispiel für den Einstieg in die Verwendung von REST ist Swagger's Petstore. Dies ist ein öffentliches REST-Beispiel, bei dem jeder im Internet seine Haustierbeschreibungen einreichen und die Haustiere anderer sehen kann.
GEThttps://petstore.swagger.io/v2/pet/100 returns a pet.POSThttps://petstore.swagger.io/v2/pet adds a new pet to the store.DELETEhttps://petstore.swagger.io/v2/pet/101 deletes a pet.
Im Mendix Modeler können Sie ein Aufrufen der REST-Aktion zu einem Microflow. Sie können den Speicherort (URL), die HTTP-Methode und HTTP-Header angeben. Siehe das Bild unten:
Indem wir eine GET-Anfrage an die obige URL senden, erhalten wir eine Darstellung eines Haustiers mit der ID 100 im JSON-Format zurück. In einem HTTP-Header geben wir an, dass wir JSON in der Antwort akzeptieren:
Beachten Sie, dass jeder seine Haustiere auf swagger POSTEN kann. Wenn also jemand anderes ein Monster in das Haustier gesteckt hat, sollten Sie es vielleicht mit einer anderen Nummer versuchen. Wenn jemand das Haustier GELÖSCHT hat, können Sie es schnell wiederherstellen, indem Sie zu https://petstore.swagger.io/#!/pet/addPet, klicken Sie auf den Beispielwert und dann auf „Probieren Sie es aus!“. Dadurch wird ein Standardhaustier mit der ID 100 hinzugefügt. Oder Sie können natürlich selbst ein Haustier POSTEN mit dem Rest-Aktion aufrufen (siehe letzter Abschnitt dieses Blogs).
JSON-Snippets und Schemaextraktion
Das JSON-Format ist eine Darstellung eines Haustieres in einer Sprache, die eine Maschine verstehen kann. Wir haben es einfach gemacht, die JSON-Antwort in Mendix Objekte, beispielsweise zur Anzeige der Informationen auf einem Mendix generierte Seite. REST-Dienste werden oft mit Dokumentation geliefert, die zeigt, wie Daten an Sie zurückgesendet werden. Die Pet Store-Dokumentation enthält ein Beispiel für ein JSON-Snippet (siehe https://petstore.swagger.io/#!/pet/getPetById mit Antwortinhaltstyp application/json).
{"id":100,"category":{"id":0,"name":"test"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":"available"}
Wenn Sie diesen Ausschnitt in ein Mendix 'JSON-Struktur'-Dokument (klicken Sie auf Format und Inspiration), Mendix extrahiert die Struktur der zurückgesendeten Daten:
Mappings
Die extrahierte Struktur wird in einem Zuordnung importieren Dokument. Das Mapping gibt grundsätzlich an, wie eingehende JSON-Daten in Mendix Objekte. Mappings sind ein einzigartiges Werkzeug in Mendix und sehr leistungsfähig, um JSON oder XML in Entitäten umzuwandeln, die Sie verwenden können. Das Haustierbeispiel ist relativ einfach, aber in anderen Diensten können Darstellungen ziemlich komplex werden. Das Mapping-Tool in Mendix ermöglicht Ihnen den Umgang mit der Datenkomplexität auf sehr intuitive Weise.
- Sie können ganz einfach auswählen, welche Elemente aus dem Schema Sie in Ihrer Anwendung verwenden möchten. Sie müssen Ihr Domänenmodell nicht mit Datenstrukturen belasten, die Sie nicht verwenden möchten.
- Sie können Entitäten per Drag-and-Drop auf die Zuordnung ziehen und sie werden automatisch mit den eingehenden Daten verknüpft.
- Wenn Sie anpassen möchten, wie die eingehenden Daten übersetzt werden in Mendix Objekte können Sie durch die Kopplung eines Microflows an das Mapping erreichen. Sie können vorhandene Objekte aktualisieren. Sie müssen lediglich ein Attribut auswählen, das zum Suchen des Objekts verwendet werden soll (Haupt).
- Sie können Entitäten und Assoziationen für das JSON generieren, indem Sie auf eine Schaltfläche klicken Automatisch zuordnen. Sie müssen sie nicht manuell erstellen. Aber natürlich können Sie Änderungen vornehmen oder Ihr vorhandenes Datenmodell nutzen. Sie können beispielsweise Entitäten erstellen Beständig im Domänenmodell, sodass die Objekte direkt aus der Datenbank in ein Datenraster auf einer Seite gelesen werden können.
Durch das Üben mit Mappings werden Sie die Leichtigkeit schätzen lernen, mit der Sie komplexe Datenstrukturen mit wenigen Mausklicks handhaben können.
Verwenden Sie Zuordnungen direkt in Ihrem REST-Aufruf
Sie können eine Datenzuordnung problemlos an Ihren REST-Aufruf koppeln. Folgen Sie unserem Haustierbeispiel: Jedes Haustier, das vom Dienst empfangen wird, wird einer PET-Entität zugeordnet. Sie müssen dazu keine komplexen Ausdrücke schreiben, alles wird von unserem visuellen Mapper erledigt.

Unsere Mapping-Dokumente unterstützen auch das XML-Format. Wenn Sie Textdaten in einem anderen Format als JSON oder XML erhalten, können Sie das Ergebnis in einer Zeichenfolgenvariable speichern, sodass Sie es später in Ihrem Mikrofluss analysieren können. Wenn Ihr REST-Aufruf mit Binärdaten wie einem Bild oder einer PDF-Datei antwortet, können Sie diese in einer FileDocument or Image Objekt. Unterstützung für binäre Darstellungen wird in einer späteren Version von hinzugefügt Mendix.
Haustiere in die Zoohandlung schicken
In unserem Mapping-Beispiel haben wir uns darauf konzentriert, wie man GET ein Haustier und eine Zuordnung zu Entitäten. Andere HTTP-Methoden werden ebenfalls unterstützt: zum Beispiel POST und PUT: Sie müssen eine Nachricht erstellen, die an den Server gesendet werden soll (die Nachricht enthält eine Darstellung des Haustieres, das Sie senden möchten). Unsere Export-Mapping-Dokumente unterstützen auch die Konvertierung Mendix Objekte in JSON oder XML. Sie sehen genauso aus wie Importmappings, aber natürlich sind die Pfeile umgekehrt! Und Sie können alle JSON-Strukturdokumente, die Sie in Ihrem Projekt erstellt haben, wiederverwenden, um sich wiederholende Arbeit zu ersparen. Für sehr einfache Anfragen können Sie auch eine Zeichenfolgenvorlage verwenden, um die HTTP-Nachricht aufzubauen. Versuchen Sie, diesen JSON-Ausschnitt in ein POST Anfrage an https://petstore.swagger.io/v2/pet:
{"id":100,"category":{"id":0,"name":"string"},"name":"doggie","photoUrls":["string"],"tags":[{"id":0,"name":"string"}],"status":available"}
Fazit
Als App-Entwickler kommt man heute nicht um Integrationen mit anderen Systemen herum. Wir haben die Integration in REST-Dienste sehr einfach gemacht, indem wir eine Rufen Sie die REST-Mikroflow-Aktion auf. Um Daten zu verarbeiten, die an und von den REST-Diensten gesendet werden, Mendix unterstützt sowohl JSON- als auch XML-Darstellungen. Mapping-Dokumente sind sehr intuitiv im Umgang mit Datenstrukturen und vollständig in unsere REST-Aufrufe integriert.
Probieren Sie es selbst aus und finden Sie heraus, wie leistungsstark und unterhaltsam Integrationen sein können!





