Benutzerdefinierte API für einen Faruptiade REST-Service implementieren
Wenn Sie eine App entwickeln, beginnen Sie in der Regel zuerst mit der Benutzeroberflächenschicht, und verbinden Sie die Anwendung mit einer anderen Anwendung mit den REST-Webservices. Dieser Ansatz eignet sich gut für kleine oder einfache Anwendungen. Wenn Anwendungen größer sind und Sie eine Verbindung mit mehreren Backend-Services herstellen möchten, können Sie versehentlich Performance- und Sicherheitsprobleme verursachen.
Es ist Best Practice, die API-Ebene für externe Backend-Services und die Benutzeroberfläche zu erstellen, um möglichst die Anzahl der Aufrufe der Backend-Services zu reduzieren. Beispiel: Ihre App kann einen einzelnen Aufruf der Facade API-Ebene ausführen, die die Aufrufe anderer REST-Services verarbeitet, und alle eingehenden Daten in einer einzigen Antwort auf Ihre mobile Anwendung konsolidiert.
Vollständige benutzerdefinierte API erstellen
So erstellen Sie eine vollständige benutzerdefinierte API mit Oracle Mobile Hub.
Klicken Sie auf , und wählen Sie im Seitenmenü Entwicklung, APIs aus. Wenn bereits eine API erstellt wurde (im Status "Entwurf" oder "Veröffentlicht"), wird eine Liste der APIs angezeigt. Wenn keine benutzerdefinierten APIs vorhanden sind, wird eine Seite mit der Schaltfläche Neue API angezeigt. Klicken Sie auf die bereits erstellte API oder auf Neue API, um zu beginnen.
Endpunkte definieren
Sie erstellen Ressourcen, um die Endpunkte der API zu definieren. Eine Ressource ist der crux einer API. Sie hat einen Typ, einige mit ihm verknüpfte Daten, eine Beziehung zu anderen Ressourcen und enthält eine oder mehrere Methoden, die darauf reagieren. Eine Ressource kann nahezu alles sein: ein Bild, eine Textdatei, eine Zusammenstellung anderer Ressourcen, eine logische Transaktion, eine Prozedur usw.
Wenn Sie eine Methode für eine Ressource erstellen, wird unter dem Link "Methoden" ein Symbol für diese Methode angezeigt. Sie können sofort sehen, welche Methoden für eine Ressource definiert sind, wenn Sie eine Ressourcendefinition überprüfen müssen. Klicken Sie auf ein Symbol, um direkt zu dieser Methodendefinition zu gehen.
Sie können die Übersichtlichkeit löschen, um eine Ressource schneller zu finden, indem Sie in den Komprimieren-Modus wechseln (er ist rechts neben Neue Ressource ). Durch die kompakte Anzeige werden Ressourcenbeschreibung, Ressourcentyp und Pfad ausgeblendet.
Methoden zu Ihren Ressourcen hinzufügen
Methoden sind Aktionen, die für eine Ressource ausgeführt werden können. Im Register "Methoden" wird eine Methode gleichzeitig angezeigt. Nachdem Sie mindestens zwei Methoden definiert haben, können Sie auf das Symbol für eine Methode am Anfang der Seite klicken, um deren Details anzuzeigen.
Nachdem Sie Methoden für die Ressource definiert haben, können Sie die Anforderungen und Antworten für diese Methoden definieren.
Definieren Sie eine Anforderung für die Methode
Nachdem Sie eine Methode ausgewählt haben, definieren Sie die Anforderung, mit der Sie den Service verbinden möchten. Beispiel: Wenn Sie die Methode POST
gewählt haben, können Sie jetzt definieren, was erstellt werden soll. Dazu fügen Sie Parameter und einen Anforderungstext hinzu, der die Beschreibung der Daten enthält, die an den Service gesendet werden sollen.
- Klicken Sie auf Anforderung, um eine Anforderung zu definieren.
- Klicken Sie auf Parameter hinzufügen, und wählen Sie einen Parametertyp aus: Abfrage oder Header. Wählen Sie Erforderlich aus, wenn der Parameter für die Methode erforderlich ist.
- Je nach ausgewählter Methode klicken Sie auf Medientyp hinzufügen und definieren den Methoden-Body. Der Hauptteil enthält die Daten, die Sie an den Server senden. Beispiel: Wenn Sie eine
POST
-Methode definieren, müssen Sie das Element definieren, das Sie erstellen, z. B. eine neue Kundenliste oder eine Serviceanfrage. Wenn Sie eineGET
-Methode definieren, müssen Sie keinen Methoden-Body senden, damit Sie keinen Medientyp angeben müssen. - Klicken Sie auf Medientyp hinzufügen, um zusätzliche Medientypen hinzuzufügen. Wenn Sie die Methode nicht benötigen, klicken Sie im Banner auf X, um sie zu löschen.
Antwort für die Methode definieren
Je nach Anforderung benötigen Sie möglicherweise eine Antwort. Eine Antwort beschreibt den Prozess für die Rückgabe von Ergebnissen vom Service. Möglicherweise möchten Sie eine Antwort definieren, mit der geprüft wird, ob die angeforderten Daten zurückgegeben wurden, oder Sie möchten eine Antwort erhalten, die bestätigt, ob die Anforderung empfangen wurde. Die Definition einer Antwort ähnelt der Definition einer Anforderung. Der Hauptunterschied besteht darin, dass Sie einen Statuscode auswählen müssen, damit Sie das Ergebnis der Verbindung kennen können.
POST
der Ressource audits
mit dem Statuscode 201 erstellt wurde, der angibt, dass eine neue Ressource erfolgreich erstellt wurde. Das Beispiel zeigt außerdem ein Antwortformat application/json
, einen Location
-Header, der hinzugefügt wurde, und den Nachrichtentext, der Pseudodaten enthält:responses:
201:
description: |
The request has been fulfilled and resulted in a new resource
being created. The newly created resource can be referenced
by the URI(s)returned in the entity of the response, with the
most specific URI for the resource given by a Location header
field.
headers:
Location:
displayName: Location
description: |
Identifies the location of the newly created resource.
type: string
example: |
/20934
required: true
body:
application/json:
example: |
{
"id": 20934,
"title": "Lynn's Leaking Water Heater",
"contact": {
"name": "Lynn Adams",
"street": "45 O'Connor Street",
"city": "Ottawa",
"postalcode": "a1a1a1",
"username": "johnbeta"
},
"status": "New",
"driveTime": 30,
"priority": "high",
"notes": "My notes",
"createdon": "2014-01-20 23:15:03 EDT",
"imageLink": "storage/collections/2e029813-d1a9-4957-a69a-fbd0d74331d77/objects/6cdaa3a8-097e-49f7--9bd2-88966c45668f?user=lynn1014"
}
Wenn Sie die Antwort definieren, können Sie Ihre Endpunkte testen oder auf Endpunkte in der Navigationsleiste klicken, um zur Hauptressourcenseite zurückzukehren. Von dort können Sie zu einer anderen Seite im API-Designer gehen, um eine Root, Ressourcentypen oder Trails zu erstellen oder API-Dokumentation hinzuzufügen.
Wenn Sie die Methode nicht benötigen, klicken Sie im Banner auf X, um sie zu löschen.
REST -Connector-API erstellen
Mit dem REST Connector-API-Assistenten können Sie Ihre Connector-API erstellen, konfigurieren und testen.
Um eine Basis-Connector-API zu erhalten, können Sie den Namen für die Connector-API und eine URL zum externen Service angeben.
Von dort können Sie:
-
Definieren Sie Regeln für spezifische Anforderungen oder Antworten für die Daten, auf die Sie zugreifen möchten.
-
Konfigurieren Sie clientseitige Sicherheits-Policys für den Service, auf den Sie zugreifen.
-
Testen Sie die Verbindung, und testen Sie die Ergebnisse der Aufrufe der Verbindung.
Sie müssen eine benutzerdefinierte API und Implementierung erstellen, damit Ihre Anwendungen die Connector-APIs aufrufen und die API und Implementierung automatisch generieren können. In diesem Fall müssen Sie eine benutzerdefinierte API mit den entsprechenden Ressourcen erstellen und dann den benutzerdefinierten Code implementieren.
Basis-Connector einrichten
Sie können einen funktionsfähigen Connector erstellen, indem Sie die ersten beiden Seiten des REST Connector-API-Assistenten ausfüllen.
-
Klicken Sie auf
, und wählen Sie im Seitenmenü Entwicklung, APIs aus.
-
Klicken Sie auf REST (wenn dies die erste zu erstellende Connector-API ist) oder auf Neuer Connector, und wählen Sie aus der Dropdown-Liste REST.
-
Identifizieren Sie die neue REST-Connector-API mit folgenden Angaben:
-
API-Anzeigename: Der Name, wie er in der Liste der Connector-APIs angezeigt wird.
-
API-Name: Der eindeutige Name für die Connector-API.
Standardmäßig wird dieser Name an die relative Basis-URI als Ressourcenname für die Connector-API angehängt. Unter dem Feld "API-Name " sehen Sie die Basis-URI.
Außer einer neuen Version dieser Connector-API darf keine andere Connector-API denselben Ressourcennamen haben.
-
Kurze Beschreibung: Diese Beschreibung wird auf der Seite Connectors angezeigt, wenn diese API ausgewählt wird.
-
-
Klicken Sie auf Erstellen.
-
Legen Sie auf der Seite "Allgemein" des Dialogfeldes "REST Connector API" die Timeoutwerte fest:
-
HTTP-Lesetimeout: Die maximale Zeit (in Millisekunden), die mit dem Warten auf das Lesen der Daten verbracht werden kann. Wenn Sie keinen Wert angeben, wird der Standardwert von 20 Sekunden angewendet.
-
HTTP-Verbindungstimeout: Die Zeit (in Millisekunden), die für die Verbindung mit der Remote-URL benötigt wurde. Ein Wert von 0mms bedeutet, dass ein endloser Timeout zulässig ist.
Die Werte für den HTTP-Timeout müssen kleiner sein als die Policy
Network_HttpRequestTimeout
, die den Standardwert 40,000 ms hat.Hinweis:
Wenn Sie zusätzlich zur Rolle des Serviceentwicklers über eine Mobile Cloud-Administratorrolle verfügen, können Sie die Dateipolicies.properties
öffnen, um den Wert für die Netzwerk-Policys für die aktuelle Umgebung in der Administratorenansicht anzuzeigen. Bitten Sie andernfalls den Mobile Cloud-Administrator um die Werte.
-
-
Klicken Sie auf Deskriptor, und geben Sie die Verbindungsinformationen für den Service ein.
Wenn Sie einen Swagger-Deskriptor-URL angeben, werden die verfügbaren Ressourcen identifiziert und angezeigt, und Sie können die gewünschten Ressourcen auswählen.
Hinweis:
Nur Standard-Internet-Zugriffsports 80 und 443 werden unterstützt. Eine Verbindung zu einem Service kann nicht über einen benutzerdefinierten Port hergestellt werden. -
Klicken Sie auf Speichern.
-
(Optional) Klicken Sie auf Testen, wählen Sie Authentifizierungszugangsdaten aus, und führen Sie Testaufrufe an den Service durch.
Dort können Sie den Connector wie folgt weiter konfigurieren:
-
(Wenn Sie einen Deskriptor auf der Seite "Deskriptor" angegeben haben) gehen Sie zu der Seite "Ressourcen " und wählen die Methoden für die angegebenen Ressourcen.
-
Definieren Sie Regeln.
-
Sicherheits-Policys festlegen.
Um sicherzustellen, dass die Connector-API-Konfiguration gültig ist, sollten Sie sie vor der Veröffentlichung gründlich testen (nicht nur über die Connector-API-Testseite). Das heißt, Sie müssen auch die benutzerdefinierte API (mit ihrer Implementierung) testen, die diese Connector-API verwendet. Wenn Sie bereit sind, die Connector-API zu veröffentlichen, sollten Sie außerdem die benutzerdefinierte API veröffentlichen, die sie aufruft.
Regeln festlegen
Sie legen Regeln für die Definition der Interaktionen zwischen Ihrer App und einem Service fest. Mit Regeln können Sie Standardparameterwerte für alle Aufrufe an Ressourcen in dem Service, Aufrufe an einen bestimmten Proxypfad und Aufrufe für bestimmte Vorgangstypen (Verben) hinzufügen. Dadurch kann die konsistente Syntax der URL-Zeichenfolge erzwungen werden, der Entwickler des benutzerdefinierten Codes muss diese Werte einfügen, und die verschiedenen Aufrufe können über Analysen verfolgt werden.
Sie können eine oder mehrere Regeln erstellen. Jede Regel kann einen oder mehrere Parameter vom Typ Query
und Header
aufweisen.
Wenn keine Regeln angewendet werden, werden alle Aufrufe an den vorhandenen Service durch den Proxy übergeben.
Die Beschreibung der gerade definierten Regel wird im Regelbanner direkt über dem Abschnitt Standardparameter angezeigt. Beispiel: Die folgenden Werte wurden angegeben:
-
Remote-URL =
https://maps.googleapis.com/maps/api/directions
/json?origin=los+angeles&destination=seattle
-
Lokale URI =
myMapAPI
-
Regel mit dem folgenden Parameter:
Query:key:A3FAEAJ903022
-
HTTP-Methoden
GET
undPUT
Die Regelbeschreibung würde folgendermaßen aussehen:
Für GET
für https://maps.googleapis.com/maps/api/directions/json?origin=los+angeles&destination=seattle
verfügbar unter myMapAPI/directions
, Query:key=A3FAEAJ903022
einbeziehen.
Wenn keine Regeln erstellt wurden, würde die Beschreibung wie folgt lauten:
Für ALLE METHODS für https://maps.googleapis.com/maps/api/directions
verfügbar unter myMapAPI
werden keine Standardparameter angewendet.
Jetzt haben Sie eine Basis-URI, die dem vorhandenen Service zugeordnet ist. Mit unserem Beispiel:
mobile/connector/myMapAPI/directions/json?origin=los+angeles&destination=seattle
wird https://maps.googleapis.com/maps/api/directions/json?origin=los+angeles&destination=seattle
zugeordnet.
Sicherheits-Policys konfigurieren und Eigenschaften außer Kraft setzen
Jede Sicherheits-Policy hat Eigenschaften, die als Overrides bezeichnet werden, die Sie konfigurieren können. Ein Grund, aus dem eine Policy-Konfigurationseigenschaft außer Kraft gesetzt wird, besteht darin, die Anzahl der zu verwaltenden Policys zu begrenzen: Anstatt mehrere Policys mit leicht unterschiedlichen Konfigurationen zu erstellen, können Sie dieselbe allgemeine Policy verwenden und bestimmte Werte außer Kraft setzen, um Ihre Anforderungen zu erfüllen.
So wählen Sie eine Sicherheits-Policy und legen die Policy Overrides fest: