Eine benutzerdefinierte API für einen Fa${Requisitionade REST-Service implementieren
Wenn Sie eine App entwickeln, beginnen Sie in der Regel zuerst mit der Benutzeroberfläche und verbinden dann Ihre Anwendung mit einer anderen Anwendung, indem Sie REST-Webservices verwenden. Diese Vorgehensweise eignet sich 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 empfiehlt sich, mit der Erstellung einer Fanade API-Ebene zwischen externen Backend-Services und der Benutzeroberfläche zu beginnen, um so zu reduzieren, dass die Anzahl der Aufrufe an die Backend-Services wenn möglich reduziert wird. Beispiel: Ihre Mobile-Anwendung kann einen einzelnen Aufruf an die Fanade API-Schicht ausführen, die die Aufrufe an andere REST-Services verarbeitet und alle eingehenden Daten in einer 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 Navigationspfad einer API. Mit diesem Typ sind einige Daten verknüpft, eine Beziehung zu anderen Ressourcen und enthält eine oder mehrere Methoden, die sich darauf auswirken. Eine Ressource kann nahezu jeder sein: ein Bild, eine Textdatei, eine Sammlung von anderen 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 prüfen müssen. Klicken Sie auf ein Symbol, um direkt zu dieser Methodendefinition zu gehen.
Sie können die Übersichtlichkeit deaktivieren, um schnell eine Ressource zu finden, indem Sie in den Kompaktmodus wechseln (der Bereich befindet sich rechts von der neuen Ressource ). In der kompakten Anzeige werden die Ressourcenbeschreibung, der Ressourcentyp und der Pfad ausgeblendet.
Methoden zu 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 am Anfang der Seite klicken, um die Details anzuzeigen.
Nachdem Sie Methoden für die Ressource definiert haben, können Sie die Anforderungen und Antworten für diese Methoden definieren.
Anforderung für die Methode definieren
Nachdem Sie eine Methode gewählt haben, definieren Sie die Anforderung, die Sie aus dem Service erstellen, zu 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 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.
- Klicken Sie je nach gewählter Methode auf Medientyp hinzufügen , und definieren Sie den Methodenhauptteil. Der Text enthält die Daten, die Sie an den Server senden. Beispiel: Wenn Sie eine
POST
-Methode definieren, müssen Sie den zu erstellenden Artikel definieren, wie eine neue Kundenliste oder eine Serviceanfrage. Wenn Sie eineGET
-Methode definieren, müssen Sie keinen Methoden-Body senden, sodass Sie keinen Medientyp angeben müssen. - Klicken Sie auf Medientyp hinzufügen , um zusätzliche Medientypen hinzuzufügen. Wenn Sie die Methode nicht mehr benötigen, klicken Sie im Banner auf X , um sie zu löschen.
Antwort für die Methode definieren
Je nach Anforderung ist möglicherweise eine Antwort erforderlich. Eine Antwort beschreibt den Prozess zum Zurückgeben von Ergebnissen aus dem Service. Möglicherweise möchten Sie eine Antwort definieren, mit der geprüft wird, ob die angeforderten Daten zurückgegeben wurden, oder ob eine Antwort 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.
POST
-Methode der audits
-Ressource mit dem Statuscode 201 erstellt wurde, was darauf hinweist, dass eine neue Ressource erfolgreich erstellt wurde. Das Beispiel zeigt außerdem das Rückgabeantwortformat application/json
, den Header Location
und den Nachrichtentext mit den Pseudodaten: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 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 gehen, um Root-, Ressourcentypen oder Trails zu erstellen oder API-Dokumentation hinzuzufügen.
Wenn Sie die Methode nicht wünschen, 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 einfache Arbeits-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 das Formular bestimmter 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 von Aufrufen für die 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. 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 funktionsfähigen Connector erstellen, indem Sie die ersten beiden Seiten des REST Connector-API-Assistenten abschließen.
-
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 REST aus der Dropdown-Liste.
-
Geben Sie die neue REST-Connector-API wie folgt an:
-
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 den relativen Basis-URI als Ressourcenname für die Connector-API angehängt. Unter dem Feld "API-Name " wird die Basis-URI angezeigt.
Anders als eine neue Version dieser Connector-API kann keine andere Connector-API denselben Ressourcennamen haben.
-
Kurzbeschreibung: 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 beim Warten auf das Lesen der Daten verbracht werden kann. Wenn Sie keinen Wert angeben, wird der Standardwert von 20 Sekunden angewendet.
-
HTTP-Verbindungs-Timeout: Die Zeit (in Millisekunden) für die Verbindung mit der Remote-URL. Ein Wert von 0mms bedeutet, dass ein endloser Timeout zulässig ist.
Die HTTP-Timeout-Werte müssen kleiner sein als die Policy
Network_HttpRequestTimeout
, die einen Standardwert von 40,000 ms hat.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 über die Administratoransicht anzuzeigen. Sonst fragen Sie den Mobile Cloud-Administrator nach den Werten.
-
-
Klicken Sie auf Deskriptor, 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:
Nur standardmäßige Internetzugriffsports 80 und 443 werden unterstützt. Die Verbindung zu einem Service kann nicht über einen benutzerdefinierten Port hergestellt werden. -
Klicken Sie auf Speichern .
-
(Optional) Klicken Sie auf Testen , wählen Sie die Zugangsdaten für die Authentifizierung aus, und machen Sie Testaufrufe an den Service.
Hier 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.
-
Regeln definieren.
-
Legen Sie Sicherheits-Policys fest.
Um sicherzustellen, dass die Connector-API-Konfiguration gültig ist, sollten Sie sie gründlich (nicht nur auf der Seite "Connector API-Test") testen, bevor Sie sie veröffentlichen. Das heißt, Sie sollten auch die benutzerdefinierte API (mit deren Implementierung) testen, die diese Connector-API verwendet. Wenn Sie bereit sind, die Connector-API zu veröffentlichen, sollten Sie auch die benutzerdefinierte API veröffentlichen, die sie aufruft.
Regeln einrichten
Sie legen Regeln zum Definieren der Interaktionen zwischen Ihrer App und einem Service fest. Mit Regeln können Sie Standardparameterwerte für alle Aufrufe von Ressourcen auf dem Service, Aufrufe an einen bestimmten Proxypfad und Aufrufe für bestimmte Typen von Vorgängen (Verben) hinzufügen. Auf diese Weise kann die konsistente Syntax der URL-Zeichenfolge durchgesetzt werden. Der Entwickler des benutzerdefinierten Codes muss diese Werte einfügen und kann die verschiedenen Aufrufe durch Analysen verfolgen.
Sie können eine oder mehrere Regeln erstellen. Jede Regel kann einen oder mehrere Parameter vom Typ Query
und Header
enthalten.
Wenn keine Regeln angewendet werden, werden alle Aufrufe durch den Proxy an den vorhandenen Service übergeben.
Die Beschreibung der Regel, die Sie gerade definiert haben, wird im Banner Regel direkt über dem Abschnitt Standardparameter angezeigt. Beispiel: Die folgenden Werte wurden bereitgestellt:
-
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
-
GET
undPUT
HTTP-Methoden
Die Regelbeschreibung würde wie folgt gelesen werden:
Für GET
bis https://maps.googleapis.com/maps/api/directions/json?origin=los+angeles&destination=seattle
in myMapAPI/directions
, Query:key=A3FAEAJ903022
einschließen.
Wenn keine Regeln erstellt wurden, würde die Beschreibung folgendermaßen lauten:
Für ALL METHODS für https://maps.googleapis.com/maps/api/directions
, das unter myMapAPI
verfügbar ist, werden keine Standardparameter angewendet.
Jetzt haben Sie eine Basis-URI, die dem vorhandenen Service zugeordnet ist. Beispiel:
mobile/connector/myMapAPI/directions/json?origin=los+angeles&destination=seattle
Zuordnungen zu https://maps.googleapis.com/maps/api/directions/json?origin=los+angeles&destination=seattle
Sicherheits-Policys konfigurieren und Eigenschaften außer Kraft setzen
Jede Sicherheits-Policy weist Eigenschaften auf, die als Overrides bezeichnet werden, die Sie konfigurieren können. Ein Grund für das Außerkraftsetzen einer Policy-Konfigurationseigenschaft besteht darin, die Anzahl von Policys zu begrenzen, die Sie verwalten müssen: Anstatt mehrere Policys mit leicht abweichenden Konfigurationen zu erstellen, können Sie dieselbe generische Policy verwenden und spezifische Werte entsprechend Ihren Anforderungen außer Kraft setzen.
So wählen Sie eine Sicherheits-Policy und legen die Policy Overrides fest: