Adapter testen und debuggen

improve this page | report issue

Übersicht

Sie können IDEs wie Eclipse, IntelliJ oder ähnliche verwenden, um Java- und JavaScript-Adapter zu testen und um Java-Code zu debuggen, der für Java- oder JavaScript-Adapter implementiert werden soll.

Dieses Lernprogramm zeigt, wie Sie Adapter mithilfe der MobileFirst CLI und mit Postman testen und einen Java-Adapter in der Eclipse-IDE debuggen können.

Fahren Sie mit folgenden Abschnitten fort:

Adapter testen

Adapter sind über eine REST-Schnittstelle verfügbar. Wenn Sie die URL einer Ressource kennen, können Sie daher HTTP-Tools wie Postman verwenden, um Anforderungen zu testen und URL-, path- und body-Parameter oder headers zu übergeben.

Die URL für den Zugriff auf die Adapterressource hat folgende Struktur:

  • JavaScript-Adapter - http://hostname-or-ip-address:port-number/mfp/api/adapters/{adapter-name}/{procedure-name}
  • Java-Adapter - http://hostname-or-ip-address:port-number/mfp/api/adapters/{adapter-name}/{path}

Parameter übergeben

  • Wenn Sie Java-Adapter verwenden, können Sie je nach Konfiguration Ihres Adapters Parameter in der URL, im Hauptteil, im Formular usw. übergeben.
  • Wenn Sie JavaScript-Adapter verwenden, übergeben Sie Parameter in der Form params=["param1", "param2"]. Eine JavaScript-Prozedur empfängt also nur einen Parameter mit der Bezeichnung params, bei dem es sich um ein Array mit sortierten, nicht benannten Werten handeln muss. Dieser Parameter kann bei Verwendung von Content-Type: application/x-www-form-urlencoded in der URL enthalten sein (GET) oder im Hauptteil (POST).

Handhabung der Sicherheit

Das Sicherheitsframework der Mobile Foundation erfordert für jede Adapterressource ein Zugriffstoken. Dies gilt auch dann, wenn der Ressource nicht explizit ein Bereich zugeordnet wurde. Der Endpunkt ist somit immer geschützt, es sei denn, Sie haben die Sicherheit inaktiviert.

Wenn Sie die Sicherheit in Java-Adaptern inaktivieren möchten, fügen Sie zur Methode/Klasse die Annotation OAuthSecurity hinzu:

@OAuthSecurity(enabled=false)

Wenn Sie die Sicherheit in JavaScript-Adaptern inaktivieren möchten, fügen Sie zur Prozedur das Attribut secured hinzu:

<procedure name="adapter-procedure-name" secured="false"/>

In der Entwicklungsversion von MobileFirst Server gibt es als Alternative einen Testtokenendpunkt zum Umgehen der Sicherheitsabfragen.

Postman

Testtoken

Zum Abrufen eines Testtokens können Sie unten auf die Schaltfläche “In Postman ausführen” klicken und eine Sammlung in Ihre Postman-App mit einer fertigen Anforderung importieren oder den nächsten Schritt ausführen und eine eigene Anforderung erstellen.

In Postman ausführen

  1. Setzen Sie mit Ihrem HTTP-Client (Postman) eine HTTP-POST-Anforderung an http://<IP-Adresse>:<PORT>/mfp/api/az/v1/token ab. Verwenden Sie Content-Type: application/x-www-form-urlencoded und die folgenden Parameter:

    • Setzen Sie grant_type auf den Wert client_credentials.
    • Setzen Sie scope auf den schützenden Bereich für Ihre Ressource. Wenn Ihrer Ressource kein schützender Bereich zugewiesen ist, lassen Sie diesen Parameter weg, damit der Standardbereich (RegisteredClient) verwendet wird. Weitere Informationen finden Sie unter Bereiche.

    Konfiguration des Postman-Hauptteils

  2. Fügen Sie einen Autorisierungsheader (authorization header) hinzu. Verwenden Sie die Basisauthentifizierung (Basic authentication) mit “test” als ID des vertraulichen Clients und “test” als geheimem Schlüssel.

    Weitere Informationen zu vertraulichen Clients finden Sie unter Vertrauliche Clients.

    Konfiguration der Postman-Autorisierung

Das Ergebnis ist ein JSON-Objekt mit einem temporär gültigen Zugriffstoken:

{
  "access_token": "eyJhbGciOiJSUzI1NiIsImp3ayI6eyJlIjoiQVFBQiIsIm4iOiJBTTBEZDd4QWR2NkgteWdMN3I4cUNMZEUtM0kya2s0NXpnWnREZF9xczhmdm5ZZmRpcVRTVjRfMnQ2T0dHOENWNUNlNDFQTXBJd21MNDEwWDlJWm52aHhvWWlGY01TYU9lSXFvZS1ySkEwdVp1dzJySGhYWjNXVkNlS2V6UlZjQ09Zc1FOLW1RSzBtZno1XzNvLWV2MFVZd1hrU093QkJsMUVocUl3VkR3T2llZzJKTUdsMEVYc1BaZmtOWkktSFU0b01paS1Uck5MelJXa01tTHZtMDloTDV6b3NVTkExNXZlQ0twaDJXcG1TbTJTNjFuRGhIN2dMRW95bURuVEVqUFk1QW9oMmluSS0zNlJHWVZNVVViTzQ2Q3JOVVl1SW9iT2lYbEx6QklodUlDcGZWZHhUX3g3c3RLWDVDOUJmTVRCNEdrT0hQNWNVdjdOejFkRGhJUHU4Iiwia3R5IjoiUlNBIiwia2lkIjoidGVzdCJ9fQ.eyJpc3MiOiJjb20uaWJtLm1mcCIsInN1YiI6InRlc3QiLCJhdWQiOiJjb20uaWJtLm1mcCIsImV4cCI6MTQ1MjUxNjczODAwNSwic2NvcGUiOiJ4eCJ9.vhjSkv5GShCpcDSu1XCp1FlgSpMHZa-fcJd3iB4JR-xr_3HOK54c36ed_U5s3rvXViao5E4HQUZ7PlEOl23bR0RGT2bMGJHiU7c0lyrMV5YE9FdMxqZ5MKHvRnSOeWlt2Vc2izh0pMMTZd-oL-0w1T8e-F968vycyXeMs4UAbp5Dr2C3DcXCzG_h9jujsNNxgXL5mKJem8EpZPolQ9Rgy2bqt45D06QTW7J9Q9GXKt1XrkZ9bGpL-HgE2ihYeHBygFll80M8O56By5KHwfSvGDJ8BMdasHFfGDRZUtC_yz64mH1lVxz5o0vWqPwEuyfslTNCN-M8c3W9-6fQRjO4bw",
  "token_type": "Bearer",
  "expires_in": 3599,
  "scope": "**"
}



Anforderung senden

Fügen Sie in Ihren künftigen Anforderungen an die Adapterendpunkte einen HTTP-Header mit dem Namen Authorization und den Wert, den Sie erhalten haben (und der mit Bearer beginnt), hinzu. Das Sicherheitsframework übergeht alle Sicherheitsabfragen zum Schutz Ihrer Ressource.

Adapteranforderung unter Verwendung von Postman mit dem Testtoken

Swagger

Die Benutzerschnittstelle für Swagger-Dokumente ist eine grafische Darstellung von REST-Endpunkten eines Adapters.
In Swagger kann ein Entwickler die Adapterendpunkte testen, bevor sie von einer Clientanwendung konsumiert werden.

Greifen Sie wie folgt auf Swagger zu:

  1. Öffnen Sie die MobileFirst Operations Console und wählen Sie in der Adapterliste einen Adapter aus.
  2. Klicken Sie auf das Register Ressourcen.
  3. Klicken Sie auf die Schaltfläche Swagger-Dokumente anzeigen.
  4. Klicken Sie auf die Schaltfläche Ein-/Ausblenden.

Swagger-Benutzerschnittstelle

ON/OFF-Schaltfläche auf der Swagger-Benutzerschnittstelle

Testtoken hinzufügen

Wenn Sie ein Testtoken zu der Anforderung hinzufügen möchten, damit das Sicherheitsframework alle Sicherheitsabfragen zum Schutz Ihrer Ressource übergeht, klicken Sie am rechten Rand neben einer Endpunktoperation auf die Schaltfläche ON/OFF.

Sie werden aufgefordert, die Bereiche auszuwählen, für die Sie die Swagger-Benutzerschnittstelle berechtigen möchten. (Zu Testzwecken können Sie alle auswählen.) Wenn Sie die Swagger-Benutzerschnittstelle zum ersten Mal verwenden, müssen Sie sich möglicherweise mit einer ID des vertraulichen Clients und einem geheimen Schlüssel anmelden. Sie müssen dazu einen neuen vertraulichen Client mit * als zulässigem Bereich erstellen.

Weitere Informationen zum vertraulichen Client enthält das Lernprogramm Vertraulicher Client.



Anforderung senden

Blenden Sie die Operation des Endpunkts ein, geben Sie (sofern erforderlich) die Parameter ein und klicken Sie auf die Schaltfläche Try it out!.

Adapteranforderung unter Verwendung von Swagger mit dem Testtoken

Swagger-Annotationen

Die Annotationen sind nur für Java-Adapter verfügbar.

Wenn Sie eine Swagger-Dokumentation für Java-Adapter generieren möchten, verwenden Sie in Ihrer Java-Implementierung Swagger-Annotationen.

Weitere Informationen zu Swagger-Annotationen finden Sie in der Swagger-Dokumentation.

@ApiOperation(value = "Multiple Parameter Types Example", notes = "Example of passing parameters by using 3 different methods: path parameters, headers, and form parameters. A JSON object containing all the received parameters is returned.")
@ApiResponses(value = { @ApiResponse(code = 200, message = "A JSON object containing all the received parameters returned.") })
@POST
@Produces(MediaType.APPLICATION_JSON)
@Path("/{path}")
public Map<String, String> enterInfo(
    @ApiParam(value = "The value to be passed as a path parameter", required = true) @PathParam("path") String path,
    @ApiParam(value = "The value to be passed as a header", required = true) @HeaderParam("Header") String header,
    @ApiParam(value = "The value to be passed as a form parameter", required = true) @FormParam("form") String form) {
  Map<String, String> result = new HashMap<String, String>();

  result.put("path", path);
  result.put("header", header);
  result.put("form", form);

  return result;
}

Swagger-Benutzerschnittstelle mit einem Endpunkt mit mehreren Parametern

Adapter debuggen

JavaScript-Adapter

Sie können JavaScript-Code von JavaScript-Adaptern mit der API MFP.Logger debuggen.
Die verfügbaren Protokollierungsstufen von der geringsten bis zur größten Ausführlichkeit sind: MFP.Logger.error, MFP.Logger.warn, MFP.Logger.info und MFP.Logger.debug.

Die Protokolle werden dann in der Protokolldatei des Anwendungsservers ausgegeben.
Sie müssen die Ausführlichkeit des Servers entsprechend festlegen, da Sie andernfalls keine Protokollierung in der Protokolldatei sehen.

Java-Adapter

Vor dem Debuggen des Java-Codes eines Adapters muss Eclipse wie folgt konfiguriert werden:

  1. Maven-Integration: Ab Eclipse Kepler (Version 4.3) ist Maven-Unterstützung in Eclipse integriert.

Falls Ihre Eclipse-Instanz keine Unterstützung für Maven bietet, folgen Sie den Anweisungen unter M2Eclipse, um Maven-Unterstützung hinzuzufügen.

  1. Wenn Maven in Eclipse verfügbar ist, importieren Sie das Maven-Adapterprojekt.

    Import eines Adapter-Maven-Projekts in Eclipse

  2. Geben Sie wie folgt die Debugparameter an:
    • Klicken Sie auf AusführenDebugkonfigurationen.
    • Klicken Sie doppelt auf Ferne Java-Anwendung.
    • Geben Sie einen Namen für dise Konfiguration an.
    • Legen Sie den Host fest. Geben Sie “localhost” an, wenn Sie einen lokalen Server verwenden. Geben Sie andernfalls den Namen Ihres fernen Serverhosts an.
    • Setzen Sie den Port auf den Wert “10777”.
    • Klicken Sie auf Durchsuchen und wählen Sie das Maven-Projekt aus.
    • Klicken Sie auf Debug.

    MobileFirst-Server-Debugparameter festlegen

  3. Klicken Sie auf Fenster → Sicht anzeigen → Debug, um debug mode einzugeben. Jetzt können Sie den Java-Code normal debuggen, wie Sie es in einer Java-Standardanwendung tun würden. Sie müssen eine Anforderung an den Adapter absetzen, damit der Code ausgeführt wird und die definierten Breakpoints erreicht werden. Befolgen Sie zu diesem Zweck die Anweisungen für das Aufrufen einer Adapterressource im Abschnitt Adapter testen.

    Adapter während des Debuggens

Anweisungen für die Nutzung von IntelliJ zum Debuggen von Java-Adaptern finden Sie im Blogbeitrag Using IntelliJ to Develop MobileFirst Java Adapters.

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.
Last modified on June 22, 2020