OData-APIs in Mendix | Mendix

Direkt zum Inhalt

OData-APIs in Mendix

OData-APIs in Mendix

In den letzten Wochen habe ich über REST-APIs und ihre Funktionsweise geschrieben in Mendix. Heute werde ich über einen etwas anderen, aber äußerst wichtigen Typ von REST-API sprechen: OData.

Was macht OData so besonders?

OData ist eine Form von REST-API, hat jedoch bestimmte Funktionen standardisiert, die REST-APIs nicht haben. Zunächst einmal unterstützt OData das Abfragen und Filtern der Anfragen selbst. OData erstellt außerdem einen funktionalen Prüfpfad der Änderungen an den Daten Ihrer App, sobald diese implementiert wurden. Wenn man OData in einem Satz zusammenfassen möchte: OData ist eine bewährte Methode zum Erstellen von REST-APIs, sodass Sie die Funktionen von REST besser nutzen können.

Nachfolgend finden Sie einen Auszug aus der offiziellen OData.org-Webseite, auf der in eigenen Worten erklärt wird, was OData ist:

„OData (Open Data Protocol) ist ein ISO/IEC-zertifiziert, OASIS-Standard das eine Reihe von Best Practices für die Erstellung und Nutzung von RESTful-APIs definiert. OData hilft Ihnen, sich beim Erstellen von RESTful-APIs auf Ihre Geschäftslogik zu konzentrieren, ohne sich um die verschiedenen Ansätze zum Definieren von Anforderungs- und Antwortheadern, Statuscodes, HTTP-Methoden, URL-Konventionen, Medientypen, Payload-Formaten, Abfrageoptionen usw. kümmern zu müssen. OData bietet auch Anleitungen zum Nachverfolgen von Änderungen, zum Definieren von Funktionen/Aktionen für wiederverwendbare Prozeduren und zum Senden asynchroner/Batch-Anforderungen.“ – OData.org

OData-Datensätze können in anderen Tools wie Microsoft Excel und Power BI verwendet werden. Mendix unterstützt OData Version 3, das Daten im Atom-XML-Format zurückgibt, und OData Version 4, das Daten sowohl im JSON- als auch im XML-Format zurückgibt, je nach dem vom Client angeforderten Format.

Wie nutzen wir OData in Mendix?

In Mendix Mit Studio Pro ist es relativ einfach, eine OData-API zu erstellen. Ähnlich wie bei regulären REST-Diensten bietet uns Studio Pro auch die Möglichkeit, eine API direkt aus unserem Domänenmodell zu generieren.

Sobald wir einen OData-Dienst erstellt haben, können wir ihn einfach in Datahub veröffentlichen, indem wir Ihre App in einer Cloud-Umgebung bereitstellen. Datahub ist ein offener Metadatenkatalog, was im Grunde bedeutet, dass Sie Daten zwischen Ihren Mendix Apps, sobald Sie den OData-Dienst auf Datahub registriert haben. Es hilft auch beim Entdecken und Verstehen der APIs selbst.

Allerdings müssen Sie Datahub nicht verwenden, um OData in Mendix, Sie können es immer noch manuell tun, indem Sie die $metadata-Verträge für die APIs selbst herunterladen.

Sobald die Daten jedoch im Datahub registriert sind, ist die Integration der Daten in einen anderen Mendix Die App ist so einfach wie das Ziehen und Ablegen der Remote-Entität (der bei Datahub registrierte OData-Dienst) in Ihr Domänenmodell.

Auch zum Zeitpunkt des Schreibens dieses Artikels, Mendix hat gerade Studio Pro 9.17.0 veröffentlicht, das einige erstaunliche neue Verbesserungen bei der Verwendung von OData in Mendix, unten ist ein Auszug aus den Versionshinweisen zu 9.17.0:

Wir haben die OData-Funktionen in Studio Pro erweitert, sodass Sie Verpacken Sie Dienste, APIs und Datenbanken mit OData und macht es einfacher, Konnektoren erstellen die auf externe Daten zugreifen. Die OData-Dienste können dann einfach entdeckt und verwendet werden in Data Hub-Katalog. Zu den neuen Funktionen gehört die Möglichkeit, [nicht persistente Entitäten als OData-Ressourcen zu veröffentlichen](](https://docs.mendix.com/refguide/wrap-services-odata/#npe-published-odata) und Verwenden Sie Mikroflüsse, um zu definieren, wie Ressourcen abgerufen und gespeichert werden sollenWir bieten auch eine OpenAPI Vertrag zu leicht Testen veröffentlichter OData-Ressourcen.

Zugriff auf das API-Dokument

Eine sehr leistungsstarke Funktion von OData in Mendix ist, dass Sie, sobald Ihre App bereitgestellt ist oder lokal ausgeführt wird, auf ein API-Dokument für Ihre veröffentlichten OData-Dienste zugreifen können unter die Basis-URL Ihrer App + „/odata-doc/“.

Beispielsweise wäre der Speicherort des Dokuments in einer lokalen App, die auf Port 8080 ausgeführt wird, folgender:

https://localhost:8080/odata-doc/

Für OData sind hier sowohl der OData $metadata-Vertrag als auch der OpenAPI-Vertrag verfügbar. Sie können die OpenAPI-Seite sogar verwenden, um OData-Aufrufe an Ihre API zu testen.

OData in der Praxis

Dieser nächste Abschnitt ist eine praktische Anleitung zum Veröffentlichen einer OData-API in Ihrem Mendix App, registrieren Sie diesen Dienst auf Datahub und nutzen Sie die Daten dann als Remote-Entität in einem anderen Mendix Anwendung.

Das Szenario:

Stellen Sie sich vor, Sie haben ein E-Commerce Mendix App. In Ihrer App haben Sie eine Entität mit Bestellungen, die an die Lagermitarbeiter weitergeleitet werden, um die Bestellung fertigzustellen und an den Kunden zu versenden. Wenn die Mitarbeiter das Lager auffüllen, katalogisieren sie in einer Excel-Tabelle, wo jedes Produkt gespeichert ist. Derzeit druckt das Lager Bestellungen aus einer Excel-Tabelle aus und sucht in einem eigenen Excel-Dokument nach, wo die Artikel gespeichert sind. Dies ist ineffizient und verlangsamt den gesamten Prozess.

Ihre vorhandene App enthält vertrauliche Kundeninformationen, die Sie nicht dem externen Lagerpersonal preisgeben möchten. Sie beschließen, eine separate App zu erstellen, mit der die Mitarbeiter Bestellungen und die zur Ausführung benötigten Artikel anzeigen können, und beschließen, die Informationen mithilfe von OData freizugeben und Mendix Datenhub.

Generieren der OData-API aus Ihrem Domänenmodell

In unserer E-Commerce-App haben wir die folgenden Entitäten im Domänenmodell: $Order und $Orderline, die eine 1:n-Assoziation haben.

Wenn wir mit der rechten Maustaste auf eine Entität klicken (in unserem Fall $Orders), haben wir die Möglichkeit, sie als OData-Ressource verfügbar zu machen.

Wenn wir darauf klicken, werden wir gefragt, wo wir die neue API in unserem Projekt erstellen möchten und wie wir die Ressource benennen möchten.

Wir werden dann automatisch zur Anzeige der generierten Ressource weitergeleitet und können ihre Eigenschaften bearbeiten. Wir können diese so belassen, wie sie sind, da die Lagermitarbeiter nur die Bestellinformationen anzeigen müssen und nicht berechtigt sein sollten, Bestelldetails zu bearbeiten.

Obwohl wir diese Funktionen nicht nutzen, möchte ich darauf hinweisen, dass Datahub nicht mehr schreibgeschützt ist — Sie können nun neben dem Lesen der Daten auch neue Datensätze einfügen, aktualisieren und löschen.

Anschließend können wir der Ressource die Entität $Orderline hinzufügen. Klicken Sie hierzu unter „Entitäten“ auf die Schaltfläche „Hinzufügen“, suchen Sie nach $orderline und klicken Sie auf „OK“.

Sobald wir S machentudio Pro erkennt, dass diese Entitäten miteinander in Beziehung stehen und fragt, ob Sie die Verbindung zwischen ihnen veröffentlichen möchten, klicken Sie auf Ja.

Sobald wir dies tun, werden Sie einige Fehler in der Konsole bemerken, wie diesen:

Wir müssen sicherstellen, dass $Itemname und $OrderNumber nicht leer sein dürfen, da sie als Schlüssel für die API verwendet werden.

Und wir müssen eine Eindeutigkeitsvalidierungsregel zu $ItemName hinzufügen, was wir im Domänenmodell tun können

Veröffentlichen der OData-Ressource im Datahub

Dieser Teil ist wirklich einfach, stellen Sie Ihre App einfach in einer Cloud-Umgebung bereit! Jede funktioniert, von der kostenlosen Cloud bis zu jeder anderen Hosting-Lösung, die Mendix bietet.

Jede OData-API, die Sie im Mendix Cloud wird automatisch registriert – das heißt, Ihre API wird ebenfalls automatisch aktualisiert. Dadurch wird sichergestellt, dass die Dokumentation immer auf dem neuesten Stand und immer relevant für die Umgebung ist, mit der Sie sich verbinden möchten. Der Katalog zeigt Ihnen, welche Version im Test, in der Abnahme oder in der Produktion ausgeführt wird, da wir die Möglichkeit bieten, semantische Versionierung für die API zu verwenden.

Wenn Sie Ihre Apps nicht im Mendix Cloud: Sie können die Katalog-APIs verwenden, um Ihre Bereitstellungen automatisch in Ihren eigenen CICD-Prozessen zu registrieren. Oder Sie können dies manuell im Data Hub-Katalog tun.

Für dieses Beispiel werde ich nur auf die Mendix Kostenlose Cloud. Sobald Ihre App bereitgestellt ist, erhalten Sie eine E-Mail von Mendix Datahub teilt Ihnen mit, dass Ihre neue OData-Ressource automatisch im Katalog registriert wurde.

Verwenden Ihrer externen Entität vom Datahub

In unserer neuen App (die für die Lagerarbeiter) haben wir eine Tabelle namens Produkt

Wir möchten die $Order- und $Orderline-Entitäten, die wir im Datahub veröffentlicht haben, hier in dieses Modul einbinden.

Gehen Sie im Domänenmodell zum Datahub-Bereich auf der rechten Seite und suchen Sie nach dem Namen Ihres registrierten Dienstes (wenn Sie in der kostenlosen Cloud bereitgestellt haben, müssen Sie im Filter Entwicklungsumgebungen aktivieren).

Sobald Sie Ihren Dienst gefunden haben, ziehen Sie einfach beide Entitäten in das Domänenmodell Ihrer neuen App und Studio Pro kümmert sich um den Rest.

Sie können die $order- und $orderline-Daten nun beliebig in Ihrer App verwenden! Gut gemacht!

Einige Dinge, die Sie beachten sollten

Denken Sie daran, wer auf die Informationen in Ihrer App zugreifen können soll. Wenn Sie in einer Anwendung Remote-Entitäten verwenden, überprüfen Sie unbedingt die Sicherheit Ihrer App.

Wählen Sie Ihre Sprache