Veröffentlichen von REST-APIs in Mendix
Anwendungsprogrammierschnittstellen oder APIs sind heute die Standardmethode, mit der wir zwei Computer oder Systeme im Web miteinander kommunizieren lassen. Ich verwende das Wort „Standard“ hier mit Bedacht, denn wer schon einmal mit der Entwicklung von APIs gearbeitet hat, weiß, dass diese von Projekt zu Projekt in der Regel speziell und einzigartig sind.
Die meisten APIs, denen Sie begegnen, folgen einem Satz von Regeln, die als Representational State Transfer oder kurz REST bezeichnet werden. In diesem Blog werde ich mich auf REST-APIs und ihre Funktionsweise konzentrieren. Mendix.
Gegenständlich was nun?
Einfach ausgedrückt ist REST eine Reihe von „Regeln“ oder Protokollen, die die Datenübertragung regeln. Wenn eine API diese Regeln befolgt, nennen wir sie eine RESTful API. Der Begriff REST wurde von Roy Fielding in seiner im Jahr 2000 veröffentlichten Doktorarbeit „Architectural Styles and the Design of Network-based Software Architectures“ geprägt. Keine Sorge, Sie müssen seine Dissertation nicht lesen, um RESTful APIs zu verstehen – sie sind inzwischen die De-facto-Methode zur Datenübertragung zwischen Systemen im heutigen Web geworden.
Was sind das für Regeln? Die kurze Antwort lautet, dass sie zwischen verschiedenen APIs unterschiedlich sind. Einige allgemein akzeptierte Standards tragen jedoch dazu bei, eine API RESTful zu machen:
- Es organisiert Entitäten oder Ressourcen in eindeutigen URIs. URI steht für Uniform Resource Identifier. Sie bestehen aus zwei Teilen – einem Netzwerkstandort und der Ressource, auf die Sie zugreifen möchten. Der Netzwerkstandort ist normalerweise die URL einer Website und die Ressource eine Tabelle mit Daten, die die Website enthält.
- staatenlos. Das bedeutet, dass Sie jede API in beliebiger Reihenfolge aufrufen können, solange Sie ihr die erforderlichen Details mitteilen. Es funktioniert auch gut für Hochleistungs-Apps, da der Server die Sitzungsdaten des Clients nicht speichern muss.
- Es verwendet HTTP-Methoden. RESTful-APIs gibt es in verschiedenen Typen oder HTTP-Methoden. Die Art und Weise, wie Sie mit den Daten interagieren möchten, bestimmt, welcher Methodentyp verwendet werden soll. (STARTE Ruft Daten ab, jetzt lesen Erstellt Daten, PATCH Aktualisiert Daten, LÖSCHEN Zerstört oder löscht Daten. Es gibt noch mehr, aber dies sind die *wichtigsten*)
- Die Datennutzlast wird formatiert mit JSON or XML. Die meisten REST-APIs formatieren die Daten in JSON- oder XML-Nutzdaten. Einige andere Formate umfassen HTML, Markup, Bilder und Dokumente (Wenn eine API mehrere Nutzdatenformate unterstützt, können Sie das Format angeben, das zurückgegeben werden soll, indem Sie „Akzeptieren” Kopfzeile)
Wenn Sie mehr über die Geschichte und Standards von REST erfahren möchten, können Sie mehr darüber lesen auf Wikipedia .
Konsumieren VS Veröffentlichen
Bei der API-Entwicklung besteht ein Unterschied zwischen der Veröffentlichung einer API zur Verwendung durch andere und der eigenen Verwendung. Mendix ermöglicht Ihnen beides: Sie können REST-APIs von anderen Systemen nutzen und Ihre eigenen veröffentlichen, alles innerhalb derselben App. Einige Apps rufen sogar ihre eigenen freigelegten Dienste auf, die Teil ihrer Architektur sind.
Da es in meinem letzten Beitrag um Konsum ging, Ich werde über das Veröffentlichen von REST-APIs sprechen in Mendix.
Erwähnenswert ist hier das Mendix unterstützt auch OData APIs out of the box, was in bestimmten Szenarien viele Vorteile bietet, und verfügt über einige leistungsstarke Filter wie Skip, Filter, Order By und Select. In diesem Artikel geht es jedoch um Standard-REST-APIs und ich würde OData lieber in meinem nächsten Blog behandeln – da es ein umfangreiches Thema ist und ich es ausführlich behandeln möchte.
Erstellen eines Exposed REST-Dienstes
Der beste Weg, etwas zu lernen, besteht darin, es zu tun. Dieser Abschnitt ist daher eine praktische Anleitung zum Veröffentlichen einer REST-API. Um mit einem einfachen Anwendungsfall zu arbeiten, zeige ich Ihnen, wie Sie eine einfache Sammlung von APIs erstellen – zur Interaktion mit einer einfachen Filmkatalog-App, die ich bereits erstellt habe.

Wie Sie sehen, ist die App nur eine Homepage, die eine Liste von Filmtiteln und einen Link zur IMDB-Seite für diesen Film anzeigt. Füllen wir sie mit Daten, damit wir etwas haben, mit dem wir interagieren können.

Wenn wir Daten einer Entität in unserem Domänenmodell verfügbar machen möchten, können wir einfach die Entität auswählen, mit der rechten Maustaste darauf klicken und „Als REST-Ressource verfügbar machen“ wählen.

Es wird nach einem Dienst in Ihrem Projekt gefragt, Sie können jedoch in jedem Modul Ihres Projekts einen neuen Dienst erstellen. In diesem Beispiel habe ich meinen „Movielist“ genannt.
Anschließend müssen Sie sich für ein Schlüsselattribut entscheiden. Dies ist nur erforderlich, wenn Sie mit bestimmten Daten interagieren und HTTP-Methoden wie GET by key, Patch und Delete verwenden möchten.

Sobald Sie auf „OK“ klicken, kümmert sich Studio Pro um den Rest und generiert alle erforderlichen Zuordnungen und die Logik, um Ihre Entität als REST-API bereitzustellen.
An diesem Punkt können Sie Ihr Projekt lokal ausführen und über Postman oder andere API-Testsoftware mit der API interagieren.
Sobald Ihre App ausgeführt wird, sind Ihre neuen Dienste zugänglich (auf Ihrem lokalen Entwicklungscomputer) und Sie können unter {Your_app_URL/api-doc/} eine Zusammenfassung aller veröffentlichten APIs Ihrer App sehen, die in meinem Beispiel wie folgt aussieht: https://localhost:8080/api-doc/
Testen der API mit Postman
Sobald Ihre App läuft und Sie Postman Auf derselben Maschine installiert und geöffnet, können Sie die Details der von Studio Pro für uns generierten GET-Methode öffnen, indem Sie darauf doppelklicken.
Sie werden feststellen, dass es ein Feld mit der Bezeichnung „Beispielstandort“ gibt. Dies ist ein Beispiel, da es den lokalen Host und den Laufzeitport der lokalen Kopie Ihrer App verwendet. Dies funktioniert problemlos für Postman, sodass wir diese URI kopieren und dort verwenden können.

Erstellen Sie in Postman eine neue Anfrage, fügen Sie die URI in das Anfrage-URI-Feld ein und klicken Sie auf „Senden“.

Sie sollten die zurückgegebenen Ergebnisse im folgenden Fenster im XML-Format sehen. Beachten Sie, dass wir auch ein Statusfeld mit der Meldung 200 OK erhalten. Dies bedeutet, dass die Anfrage erfolgreich bearbeitet wurde.
Mach es selbst
Klingt einfach – aber was, wenn ich mehr Kontrolle über die Funktionsweise des Dienstes haben möchte? Nun, Sie müssen sich nicht darauf verlassen, dass Studio Pro dies für Sie generiert. Sie können auch eine API komplett von Grund auf neu erstellen und jedes Detail nach Ihren Wünschen bestimmen.
Oben habe ich erwähnt, dass die automatisch generierten Dienste, die wir erstellt haben, die Daten in XML zurückgeben. Das ist für die meisten Szenarien in Ordnung, aber was wäre, wenn Sie die Ergebnisse stattdessen in JSON zurückgeben möchten?
Wir können den Mikrofluss öffnen, der die Logik für diesen Endpunkt verwaltet. In diesem Fall heißt er „Movies_Get_All“.

Derzeit ruft der Microflow einfach alle Datensätze ab und gibt sie zurück. Die Konvertierung in XML wird vom Export-Mapping übernommen, das mit dem REST-Dienst „Movies_Export“ verbunden ist.
So ändern Sie den Rückgabetyp in JSON können wir Verwenden Sie die Kopfzeile „Akzeptieren“ mit dem Wert „Anwendung/JSON“, wie ich oben erwähnt habe.
Testen Sie Ihre App, ohne sie erneut auszuführen, noch einmal in Postman, und ändern Sie dabei keine Details, außer dem Hinzufügen des Headers „Accept“ – „Application/JSON“.
Wenn alles erfolgreich ist, erhalten Sie die Nutzlast in JSON. Beachten Sie, dass die Antwortzeit des Dienstes um fast 400 ms (Millisekunden) gesunken ist, was eine erhebliche Verbesserung der API-Antwortzeiten darstellt. Dies liegt daran, dass JSON speziell für die Datenübertragung entwickelt wurde. Sie können Dienste für noch schnellere Antwortzeiten optimieren, indem Sie bewährte Optimierungsmethoden wie diese verwenden: Anwenden von Indizes um die Datenbankabrufzeiten zu beschleunigen.

Von Grund auf neu erstellen
Sie können noch einen Schritt weiter gehen und alle Komponenten der API von Grund auf neu erstellen. Wir können dies jetzt versuchen, indem wir eine neue Ressource für diesen freigegebenen Dienst erstellen, die Benutzer speziell begrüßt.
Klicken Sie zunächst unter „Ressourcen“ des freigegebenen Dienstes auf „Hinzufügen“, geben Sie der neuen Ressource einen Namen – ich habe meine „hellothere“ genannt – und klicken Sie auf „OK“.

Als nächstes müssen wir einen Vorgang für diese Ressource erstellen. Wenn die neue Ressource ausgewählt ist, klicken Sie unter „Vorgänge“ auf „Hinzufügen“.
Wir belassen die Methode als GET und ändern den Operationspfad nicht – wir müssen nur einen Mikrofluss bereitstellen, um die Logik zu handhaben. Klicken Sie auf „Auswählen“, wählen Sie aus, wo Sie den Fluss haben möchten, und klicken Sie auf „Neu“. Ich habe den automatisch generierten Mikroflussnamen „GetHelloThere“ verwendet.
Öffnen Sie den Flow und doppelklicken Sie auf den Microflow-Endpunkt, damit wir die Datennutzlast als benutzerdefinierte JSON-Zeichenfolge angeben können.
'{''Gruß'':''https://www.youtube.com/watch?v=eaEMSKzqGAg”}'
Beachten Sie die Anführungszeichen rund um die JSON Schlüssel-Wert-Paare der Begrüßung und des Youtube-Links. Dies sind keine doppelten Anführungszeichen, sondern zwei einfache Anführungszeichen am Anfang und Ende. Dies dient zum Escapen des Strings, da Studio Pro Anführungszeichen normalerweise als Trennzeichen in der String-Variable interpretiert. Dadurch wird Studio Pro angewiesen, Anführungszeichen in die Antwort einzufügen.
Jetzt können wir unsere App erneut ausführen und den neuen Dienst in Postman testen. Wenn alles gut geht, sollte unsere benutzerdefinierte Nutzlast mit einem zurückgegebenen Wert zurückgegeben werden. 200 OK-Status.

Alles bereit!
Jetzt wissen Sie alles, was Sie brauchen, um mit der Erstellung Ihrer eigenen REST-APIs zu beginnen. Mendix. Wenn Sie mehr erfahren möchten, beispielsweise wie Sie Ihrem Service Sicherheit, Authentifizierung oder benutzerdefinierte Header hinzufügen, besuchen Sie unbedingt academy.mendix.com und lernen Sie. Halten Sie Ausschau nach meinem nächsten Beitrag, in dem ich in die Welt von OData eintauche.