JavaScript-Adapter
improve this page | report issueÜbersicht
JavaScript-Adapter sind Schablonen für die Verbindung zu HTTP- und SQL-Back-Ends. Sie stellen eine Reihe von Services bereit, die als Prozeduren bezeichnet und von mobilen Apps mit AJAX-Abfragen aufgerufen wreden können.
Voraussetzung: Arbeiten Sie zuerst das Lernprogramm Java- und JavaScript-Adapter erstellen durch.
Dateistruktur
Ordner ‘adapter-resources’
Der Ordner adapter-resources enthält eine XML-Konfigurationsdatei. Diese Konfigurationsdatei beschreibt die Konnektivitätsoptionen und listet die Prozeduren auf, die für die Anwendung oder andere Adapter zugänglich gemacht werden.
<?xml version="1.0" encoding="UTF-8"?>
<mfp:adapter name="JavaScriptAdapter">
<displayName>JavaScriptAdapter</displayName>
<description>JavaScriptAdapter</description>
<connectivity>
<connectionPolicy>
...
</connectionPolicy>
</connectivity>
<procedure name="procedure1"></procedure>
<procedure name="procedure2"></procedure>
<property name="name" displayName="username" defaultValue="John" />
</mfp:adapter>
name
: Dieses obligatorische Attribut gibt den Namen des Adapters an. Dieser Name muss innerhalb von MobileFirst Server eindeutig sein. Er kann aus alphanumerischen Zeichen und Unterstreichungszeichen bestehen und muss mit einem Buchstaben beginnen. Den Namen eines definierten und implementierten Adapters können Sie nicht mehr ändern.- <displayName>: Dieses optionale Attribut gibt den Namen des Adapters an, der in der MobileFirst Operations Console angezeigt wird. Wenn dieses Element nicht angegeben ist, wird stattdessen der Wert des Attributs name verwendet.
- <description>: Dieses optionale Attribut gibt zusätzliche Informationen zum Adapter an. Die Informationen werden in der MobileFirst Operations Console angezeigt.
- <connectivity>: Dieses obligatorische Attribut definiert den Mechanismus, über den der Adapter eine Verbindung zur Back-End-Anwendung herstellt. Es enthält das Unterelement <connectionPolicy>.
- <connectionPolicy>: Dieses obligatorische Element definiert Verbindungseigenschaften. Die Struktur dieses Unterelements hängt von der Integrationstechnologie der Back-End-Anwendung ab. Weitere Informationen zu <connectionPolicy> finden Sie in der Beschreibung zum Element <connectionPolicy> für HTTP-Adapter und zum Element <connectionPolicy> für SQL-Adapter.
- <procedure>: Dieses obligatorische Attribut definiert einen Prozess für den Zugriff auf einen Service, der über eine Back-End-Anwendung zugänglich gemacht wird.
name
: Dieses obligatorische Element gibt den Namen der Prozedur an. Dieser Name muss innerhalb des Adapters eindeutig sein. Er kann aus alphanumerischen Zeichen und Unterstreichungszeichen bestehen und muss mit einem Buchstaben beginnen.audit
: Dieses optionale Element definiert, ob Aufrufe der Prozedur im Prüfprotokoll erfasst werden. Folgende Werte sind gültig:true
: Aufrufe der Prozedur werden im Prüfprotokoll erfasst.false
: Standardwert. Aufrufe der Prozedur werden nicht im Prüfprotokoll erfasst.
scope
: Dieses optionale Element gibt den Sicherheitsbereich an, der die Adapterressourcenprozedur schützt. Der Bereich kann eine Zeichenfolge mit null oder mehr Bereichselementen ("scope") sein, die jeweils durch ein Leerzeichen getrennt sind, oder auf null gesetzt werden, damit der Standardbereich angewendet wird. Ein Bereichselement kann ein Schlüsselwort sein, das einer Sicherheitsüberprüfung zugeordnet ist, oder der Name einer Sicherheitsüberprüfung. Der Standardbereich istRegisteredClient
, wobei es sich um ein reserviertes MobileFirst-Schlüsselwort handelt. Nach Standardschutz ist ein Zugriffstoken für den Zugriff auf die Ressource erforderlich.
Weitere Informationen zum MobileFirst-OAuth-Ressourcenschutz und zum Konfigurieren des Ressourcenschutzes für JavaScript-Adapterressourcen finden Sie unter Adapterressourcen schützen.
Wenn das Attributsecured
den Wertfalse
hat, wird das Attributscope
ignoriert.secured
: Dieses optionale Element definiert, ob die Adapterprozedur vom MobileFirst-Sicherheitsframework geschützt wird. Folgende Werte sind gültig:true
: Standardwert. Die Prozedur wird geschützt. Zum Aufrufen der Prozedur ist ein gültiges Zugriffstoken erforderlich.false
: Die Prozedur ist nicht geschützt. Zum Aufrufen der Prozedur ist kein Zugriffstoken erforderlich (siehe Ungeschützte Ressourcen). Wenn dieser Wert festgelegt ist, wird das Attributscope
ignoriert.
- <securityCheckDefinition>: Dieses optionale Attribut definiert ein Sicherheitsprüfungsobjekt. Weitere Informationen zu Sicherheitsüberprüfungen enthält das Lernprogramm Sicherheitsüberprüfungen erstellen.
property
: Dieses optionale Attribut deklariert eine benutzerdefinierte Eigenschaft. Weiteres erfahren Sie im Abschnitt Angepasste Eigenschaften dieses Lernprogramms.
Abschnitt schließen
Angepasste Eigenschaften
Die Datei adapter.xml kann auch benutzerdefinierte Eigenschaften enthalten. Die Werte, die Entwickler diesen Eigenschaften während der Adaptererstellung zuweisen, können in der MobileFirst Operations Console auf der Registerkarte Konfigurationen für Ihren Adapter überschrieben werden, ohne dass der Adapter neu implementiert werden muss. Benutzredefinierte Eigenschaften können mit der API getPropertyValue gelesen und später zur Laufzeit weiter angepasst werden.
Hinweis: Die Elemente für die Konfigurationseigenschaften müssen sich immer unterhalb der <procedure>-Elemente befinden. Im obigen Beispiel wurde eine Eigenschaft <displayName> mit einem Standardwert definiert, sodass sie später verwendet werden kann.
Das Element <property> wird mit folgenden Attributen verwendet:
name
: Name der Eigenschaft, wie er in der Konfigurationsklasse definiert istdefaultValue
: Setzt den in der Konfigurationsklasse definierten Wert außer KraftdisplayName
: Anzeigename, der in der Konsole erscheint (optional)description
: Beschreibung, die in der Konsole angezeigt wird (optional)type
: Stellt sicher, dass die Eigenschaft einen bestimmten Typ hat, z. B.integer
,string
oderboolean
bzw. eine Liste mit gültigen Werten wietype="['1','2','3']"
(optional)
Pull- und Push-Konfiguration
Angepasste Adaptereigenschaften können über die auf der Registerkarte Konfigurationsdateien angezeigte Adapterkonfiguraionsdatei gemeinsam genutzt werden.
Verwenden Sie dazu die nachfolgend beschriebenen Befehle pull
und push
in Maven
oder in der MobileFirst CLI. Damit die Eigenschaften gemeinsam genutzt werden können, müssen Sie die Standardwerte der Eigenschaften ändern.
Führen Sie die Befehle im Stammordner des Maven-Adapterprojekts aus.
Maven
- Konfigurationsdatei mit pull übertragen
mvn adapter:configpull -DmfpfConfigFile=config.json
- Konfigurationsdatei mit push übertragen
mvn adapter:configpush -DmfpfConfigFile=config.json
MobileFirst CLI
- Konfigurationsdatei mit pull übertragen
mfpdev adapter pull
- Konfigurationsdatei mit push übertragen
mfpdev adapter push
Konfigurationen per Push-Operation auf mehrere Server übertragen
Die Befehle pull und push können helfen, diverse DevOps-Abläufe zu erstellen, die je nach Umgebung (DEV, QA, UAT, PRODUCTION) unterschiedliche Werte für Adapter erfordern.
Maven
Oben ist beschrieben, wie standardmäßig eine Datei config.json angegeben wird. Erstellen Sie Dateien mit unterschiedlichen Namen für verschiedene Ziele.
MobileFirst CLI
Verwenden Sie die Option –configFile oder -c, um eine von der Standarddatei abweichende Konfigurationsdatei anzugeben.
mfpdev adapter pull -c [adapterProject]/alternate_config.json
Weitere Informationen erhalten Sie, wenn Sie
mfpdev help adapter pull/push
eingeben.
Ordner ‘js’
Dieser Ordner enthält die JavaScript-Implementierungsdatei für alle Prozeduren, die in der Datei adapter.xml deklariert sind. Es kann nur eine JavaScript-Datei in einem JavaScript-Adapter geben. Außerdem kann der Ordner XSL-Dateien mit einem Umwandlungsschema für abgerufene XML-Rohdaten enthalten. Von einem Adapter abgerufene Daten können als Rohdaten oder als vom Adapter vorverarbeitete Daten zurückgegeben werden. In beiden Fällen werden die Daten der Anwendung als JSON-Objekt präsentiert.
Prozeduren von JavaScript-Adaptern
Prozeduren werden in XML deklariert und mit serverseitigem JavaScript für folgende Zwecke implementiert:
- Bereitstellung von Adapterfunktionen für die Anwendung
- Aufruf von Back-End-Services zum Abrufen von Daten oder Ausführen von Aktionen
Für jede in der Datei adapter.xml deklarierte Prozedur muss es eine entsprechende Funktion in der JavaScript-Datei geben.
Durch serverseitiges JavaScript kann eine Prozedur die Daten vor oder nach dem Aufrufen des Service verarbeiten. Sie können auf abgerufene Daten mit einfachem XSLT-Code weitere Filter anwenden.
Prozeduren von JavaScript-Adaptern werden in JavaScript implementiert. Da ein Adapter jedoch eine serverseitige Entität ist,
besteht die Möglichkeit, Java im Adaptercode zu verwenden.
Globale Variablen verwenden
MobileFirst Server ist nicht auf HTTP-Sitzungen angewiesen, und jede Anforderung kann von einem anderen Knoten empfangen werden. Sie sollten nicht darauf setzen, dass Daten von einer Anforderung zur nächsten durch globale Variablen erhalten bleiben können.
Schwellenwert für Adapterantwort
Adapteraufrufe sind nicht dafür gedacht, riesige Datenblöcke zurückzugeben, weil die Adapterantwort als Zeichenfolge im MobileFirst-Server-Speicher gespeichert wird. Wenn die Datenmenge daher nicht in den verfügbaren Speicher passt, kann der Adapteraufruf fehlschlagen. Konfigurieren Sie vorbeugend einen Schwellenwert, ab dem MobileFirst Server mit gzip komprimierte HTTP-Antworten zurückgibt. Das HTTP-Protokoll hat Standardheader zur Unterstützung der gzip-Komprimierung. Die Clientanwendung muss auch in der Lage sein, gzip-Inhalte in HTTP zu unterstützen.
Serverseite
Legen Sie in der MobileFirst Operations Console unter
Laufzeiten > Einstellungen > GZIP-Komprimierungsschwellenwert
für Adapterantworten den gewünschten Schwellenwert fest. Der Standardwert
ist 20 KB.
Hinweis: Wenn Sie die Änderung in der MobileFirst Operations Console speichern, tritt sie sofort in der Laufzeit in Kraft.
Clientseite
Sie müssen den Client so konfigurieren, dass er eine gzip-Antwort analysieren kann.
Setzen Sie dazu in jeder Clientanforderung den Wert des Headers Accept-Encoding
auf gzip
. Verwenden Sie die Methode
addHeader
mit Ihrer Anforderungsvariablen, z. B. request.addHeader("Accept-Encoding","gzip");
.
Serverseitige APIs
JavaScript-Adapter können serverseitige APIs verwenden, um Operationen im Zusammenhang mit MobileFirst Server auszuführen: Aufrufen anderer JavaScript-Adapter, Anmeldung beim Serverprotokoll, Abrufen der Werte von Konfigurationseigenschaften, Melden von Aktivitäten an Analytics, Abrufen der Identität des Anforderungsausstellers.
getPropertyValue
Verwenden Sie die API MFP.Server.getPropertyValue(propertyName)
, um
in der Datei adapter.xml oder in der MobileFirst Operations Console definierte Eigenschaften abzurufen:
MFP.Server.getPropertyValue("name");
getTokenIntrospectionData
Verwenden Sie die API MFP.Server.getTokenIntrospectionData()
, um die aktuell verwendete
Benutzer-ID abzurufen:
function getAuthUserId(){
var securityContext = MFP.Server.getTokenIntrospectionData();
var user = securityContext.getAuthenticatedUser();
return "User ID: " + user.getId;
}
getAdapterName
Verwenden Sie die API getAdapterName()
, um den Adapternamen abzurufen.
invokeHttp
Verwenden Sie die API MFP.Server.invokeHttp(options)
in HTTP-Adaptern.
Verwendungsbeispiele enthält das Lernprogramm JavaScript-HTTP-Adapter.
invokeSQL
Verwenden Sie die APIs MFP.Server.invokeSQLStatement(options)
und MFP.Server.invokeSQLStoredProcedure(options)
in SQL-Adaptern.
Verwendungsbeispiele enthält das Lernprogramm JavaScript-SQL-Adapter.
addResponseHeader
Verwenden Sie die API MFP.Server.addResponseHeader(name,value)
, um neue Header zur Antwort hinzuzufügen:
MFP.Server.addResponseHeader("Expires","Sun, 5 October 2014 18:00:00 GMT");
getClientRequest
Verwenden Sie die API MFP.Server.getClientRequest()
, um einen Verweis auf das
Java-Objekt HttpServletRequest zu erhalten, mit dem eine Adapterprozedur aufgerufen wurde:
var request = MFP.Server.getClientRequest();
var userAgent = request.getHeader("User-Agent");
invokeProcedure
Verwenden Sie MFP.Server.invokeProcedure(invocationData)
, um andere JavaScript-Adapter aufzurufen.
Verwendungsbeispiele enthält das Lernprogramm Erweiterte Nutzung von Adaptern und Adapterkombinationen.
Protokollierung
Die JavaScript-API stellt über die Klasse MFP.Logger Protokollierungsfunktionen bereit. Es gibt vier Funktionen, die vier Standardprotokollierungsstufen entsprechen.
Weitere Informationen enthält das Lernprogramm Serverseitige Protokollerfassung.
Beispiele für JavaScript-Adapter
▲Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.