Benutzerdefinierte API für einen REST-Service für Fassaden implementieren
Wenn Sie eine mobile Anwendung entwickeln, beginnen Sie in der Regel zuerst mit der Benutzeroberflächenschicht und verbinden dann Ihre Anwendung mit einer anderen Anwendung über REST-Webservices. Dieser Ansatz eignet sich gut für kleine oder einfache Anwendungen. Wenn Anwendungen größer sind und Sie eine Verbindung zu mehreren Backend-Services herstellen möchten, können Sie versehentlich Performance- und Sicherheitsprobleme verursachen.
Es ist eine Best Practice, mit dem Erstellen einer Fassaden-API-Schicht zwischen den externen Backend-Services und der Benutzeroberfläche zu beginnen, um die Anzahl der Aufrufe an die Backend-Services nach Möglichkeit zu reduzieren. Beispiel: Ihre mobile Anwendung kann einen einzelnen Aufruf der Fassaden-API-Schicht ausführen, der die Aufrufe anderer REST-Services verarbeitet, und alle eingehenden Daten in einer einzigen Antwort auf Ihre mobile Anwendung konsolidieren.
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 (ob 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 API, die Sie bereits erstellt haben, oder klicken Sie auf Neue API, um zu beginnen.
Endpunkte definieren
Sie erstellen Ressourcen, um die Endpunkte der API zu definieren. Eine Ressource ist der Kern einer API. Es hat einen Typ, mit dem einige Daten verknüpft sind, eine Beziehung zu anderen Ressourcen und enthält eine oder mehrere Methoden, die darauf reagieren. Eine Ressource kann fast alles sein: ein Bild, eine Textdatei, eine Sammlung 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. Wenn Sie eine Ressourcendefinition prüfen müssen, können Sie sofort sehen, welche Methoden für eine Ressource definiert sind. Klicken Sie auf ein Symbol, um direkt zu dieser Methodendefinition zu gelangen.
Sie können die Unordnung aufheben, um eine Ressource schneller zu suchen, indem Sie in den Kompaktmodus wechseln (rechts neben Neue Ressource). Die kompakte Anzeige blendet die Ressourcenbeschreibung, den Ressourcentyp und den Pfad aus.
Methoden zu Ihren Ressourcen hinzufügen
Methoden sind Aktionen, die für eine Ressource ausgeführt werden können. Auf der Seite "Methoden" wird jeweils eine Methode angezeigt. Nachdem mindestens zwei Methoden definiert wurden, können Sie auf das Symbol für eine Methode oben auf 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.
Prozess für die Methode definieren
Nachdem Sie eine Methode ausgewählt haben, definieren Sie die Anforderung des Service, mit dem Sie eine Verbindung herstellen möchten. Beispiel: Wenn Sie eine POST
-Methode ausgewählt haben, können Sie jetzt definieren, was erstellt werden soll. Dazu fügen Sie Parameter und einen Anforderungstext hinzu, der die Beschreibung der an den Service zu sendenden Daten enthält.
- 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 Sie den Methodentext. Der Body enthält die Daten, die Sie an den Server senden. Beispiel: Wenn Sie eine
POST
-Methode definieren, müssen Sie den Artikel definieren, den Sie erstellen, z.B. ein neues Kundenangebot oder eine Serviceanfrage. Wenn Sie eineGET
-Methode definieren, müssen Sie keinen Methodenbody senden, damit Sie keinen Medientyp angeben müssen. - Klicken Sie auf Medientyp hinzufügen, um weitere Medientypen hinzuzufügen. Wenn Sie die Methode nicht möchten, 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 zur Rückgabe von Ergebnissen aus dem Service. Sie können eine Antwort definieren, die überprüft, ob die von Ihnen angeforderten Daten zurückgegeben wurden, oder eine Antwort, die bestätigt, ob die Anforderung empfangen wurde. Das Definieren einer Antwort ähnelt dem Definieren einer Anforderung. Der Hauptunterschied besteht darin, dass Sie einen Statuscode auswählen müssen, um das Ergebnis der Verbindung anzuzeigen.
POST
der Ressource audits
mit dem Statuscode 201 erstellt wurde, der angibt, dass eine neue Ressource erfolgreich erstellt wurde. Das Beispiel zeigt auch das Rückgabeantwortformat application/json
, einen hinzugefügten Location
-Header und den Nachrichtentext mit Mock-Daten: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 Ihre Antwort definieren, können Sie die Endpunkte testen oder in der Navigationsleiste auf Endpunkte klicken, um zur Hauptseite "Ressourcen" zurückzukehren. Von dort aus können Sie zu einer anderen Seite im API Designer wechseln, um eine Root, Ressourcentypen oder Eigenschaften zu erstellen oder API-Dokumentation hinzuzufügen.
Wenn Sie die Methode nicht möchten, klicken Sie im Banner auf X, um sie zu löschen.
REST-Connector-API erstellen
Mit dem REST-Connector-API-Assistenten können Sie die Connector-API erstellen, konfigurieren und testen.
Um eine grundlegende funktionierende Connector-API abzurufen, können Sie nur einen Namen für die Connector-API und eine URL für den externen Service angeben.
Von dort aus können Sie:
-
Definieren Sie Regeln, um bestimmte Anforderungen oder Antworten für die Daten zu bilden, 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 Verbindungsaufrufe.
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. Wenn Sie dies manuell tun möchten, müssen Sie eine benutzerdefinierte API mit den entsprechenden Ressourcen erstellen und dann den benutzerdefinierten Code implementieren.
Basis-Connector einrichten
Sie können einen funktionierenden Connector erstellen, indem Sie die ersten beiden Seiten im 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 in der Dropdown-Liste die Option REST aus.
-
Identifizieren Sie die neue REST-Connector-API, indem Sie Folgendes angeben:
-
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. Die Basis-URI wird unter dem Feld API-Name angezeigt.
Abgesehen von einer neuen Version dieser Connector-API kann keine andere Connector-API denselben Ressourcennamen aufweisen.
-
Kurzbeschreibung: Diese Beschreibung wird auf der Seite "Connectors" angezeigt, wenn diese API ausgewählt ist.
-
-
Klicken Sie auf Create.
-
Legen Sie im Dialogfeld "REST-Connector-API" auf der Seite "Allgemein" die Timeoutwerte fest:
-
HTTP-Lesetimeout: Die maximale Zeit (in Millisekunden), die für das Warten auf das Lesen der Daten aufgewendet 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 aufgewendet wurde. Ein Wert von 0 mm bedeutet, dass ein unbegrenzter Timeout zulässig ist.
Die HTTP-Timeoutwerte müssen kleiner als die
Network_HttpRequestTimeout
-Policy sein, die einen Standardwert von 40.000 ms aufweist.Hinweis:
Wenn Sie zusätzlich zu Ihrer Serviceentwicklerrolle ü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 Administratoransicht anzuzeigen. Fragen Sie andernfalls den Mobile Cloud-Administrator nach den Werten.
-
-
Klicken Sie auf Descriptor, und geben Sie die Verbindungsinformationen für den Service ein.
Wenn Sie eine Swagger-Deskriptor-URL angeben, werden die verfügbaren Ressourcen identifiziert und angezeigt, und Sie können die gewünschten Ressourcen auswählen.
Hinweis:
Es werden nur Standard-Internetzugangsports 80 und 443 unterstützt. 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 aus.
Von dort aus können Sie den Connector wie folgt weiter konfigurieren:
-
(Wenn Sie auf der Seite "Deskriptor" einen Deskriptor angegeben haben, gehen Sie zur Seite Ressourcen, und wählen Sie die Methoden für die bereitgestellten Ressourcen aus.
-
Regeln definieren.
-
Sicherheits-Policys festlegen.
Um sicherzustellen, dass die Connector-API-Konfiguration gültig ist, sollten Sie sie gründlich testen (nicht nur auf der Seite "Connector-API-Test"), bevor Sie sie veröffentlichen. Das heißt, Sie sollten 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 bereit sein, die benutzerdefinierte API zu veröffentlichen, die sie aufruft.
Regeln festlegen
Sie legen Regeln fest, um die Interaktionen zwischen Ihrer App und einem Service zu definieren. Mit Regeln können Sie Standardparameterwerte für alle Aufrufe von Ressourcen im Service, Aufrufe eines bestimmten Proxypfads und Aufrufe bestimmter Typen von Vorgängen (verbs) hinzufügen. Auf diese Weise wird eine konsistente Syntax der URL-Zeichenfolge erzwungen, der Entwickler von benutzerdefiniertem Code muss diese Werte nicht 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 über den Proxy an den vorhandenen Service übergeben.
Die Beschreibung der soeben definierten Regel wird im Banner Regel direkt über dem Abschnitt Standardparameter angezeigt. Angenommen, es wurden die folgenden Werte 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 lautet wie folgt:
Um GET
bis https://maps.googleapis.com/maps/api/directions/json?origin=los+angeles&destination=seattle
unter myMapAPI/directions
verfügbar zu machen, nehmen Sie Query:key=A3FAEAJ903022
auf.
Wenn keine Regeln erstellt wurden, lautet die Beschreibung wie folgt:
Für ALL METHODS to 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
ist 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 verfügt über Eigenschaften, sogenannte Overrides, die Sie konfigurieren können. Ein Grund zum Überschreiben einer Policy-Konfigurationseigenschaft besteht darin, die Anzahl der Policys einzuschränken, die Sie verwalten müssen. Anstatt mehrere Policys mit leicht unterschiedlichen Konfigurationen zu erstellen, können Sie dieselbe generische 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: