Antwort mit einem Java-Callout in Großbuchstaben umwandeln

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

Wenn Sie Java-Callout zum ersten Mal ausprobieren, empfehlen wir Ihnen, mit So erstellen Sie ein Java-Objekt Callout

Dieses Cookbook-Beispiel zeigt, wie eine einfache JavaCallout-Richtlinie erstellt wird, die Benutzerdefinierter Java-Code im Kontext eines Proxy-Ablaufs.

Wozu dient der Beispielcode?

Der API-Proxy in diesem Beispiel ruft einen Zieldienst auf, der eine einfache JSON-Antwort zurückgibt. Die Die Java-Callout-Richtlinie wird auf den Zielantwortfluss gesetzt. Der Java-Code konvertiert die Header und Inhalt der Antwort auf Großbuchstaben. Es ist ein einfaches Beispiel: Sie veranschaulicht jedoch, um benutzerdefinierten Java-Code im Kontext eines API-Proxys in Edge zum Laufen zu bringen.

Beispiel ausprobieren

Projekt herunterladen

Sie können dieses Projekt aus dem Apigee-Repository api-platform-samples auf GitHub herunterladen.

  1. Laden Sie api-platform-samples in Ihr System herunter oder klonen Sie es.
  2. Wechseln Sie in einem Terminal oder Codeeditor Ihrer Wahl zum api-platform-samples/doc-samples/java-cookbook-Projekt.

Code mit Maven kompilieren

Das Projekt ist so eingerichtet, dass Sie es mit Maven kompilieren können. Wenn Sie javac folgen, folgen Sie dem Maven-Beispiel auch hier.

  1. Maven muss installiert sein:
    mvn -version
    
  2. Führen Sie das java-cookbook/buildsetup.sh-Skript aus: Mit diesem Skript werden die erforderlichen JAR-Abhängigkeiten in Ihrem lokalen Maven-Repository installiert.
  3. cd in das java-cookbool/callout-Verzeichnis.
  4. Führen Sie Maven aus:
    mvn clean package
    
  5. Prüfen Sie bei Bedarf, ob die edge-custom-policy-java-cookbook.jar-JAR-Datei nach java-cookbook/apiproxy/resources/java kopiert wurde. Dies ist der erforderliche Speicherort für JAR-Dateien, die Sie mit einem Proxy bereitstellen möchten.

Kompilieren mit javac

Wenn Sie javac verwenden möchten, um den Code zu kompilieren, können Sie beispielsweise Folgendes ausführen (aus dem java-cookbook-Verzeichnis). Die erforderlichen JAR-Dateien werden im java-cookbook/lib-Verzeichnis für Sie bereitgestellt.

  1. cd in api-platform-samples/doc-samples/java-cookbook.
  2. Achten Sie darauf, dass Ihr Pfad javac enthält.

    javac -version
    
  3. Führen Sie den folgenden javac-Befehl aus:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/ResponseUppercase.java
    
  4. Kopieren Sie die JAR-Datei in das Verzeichnis apiproxy/resources/java. Dies ist der erforderliche Speicherort für JAR-Dateien, die Sie mit einem Proxy bereitstellen möchten.

    cp com/apigeesample/ResponseUppercase.class apiproxy/resources/java
    

Proxy bereitstellen und aufrufen

Ein Bereitstellungsskript wird im ./java-cookbook-Verzeichnis bereitgestellt. Bevor Sie jedoch ist eine schnelle Einrichtung erforderlich.

  1. CD zu api-platform-samples/doc-samples/java-cookbook
  2. Öffnen Sie die Datei ../../setup/setenv.sh und bearbeiten Sie sie, falls Sie das noch nicht getan haben. wie mit Ihren Apigee-Kontoinformationen angegeben: Ihr Nutzername (die E-Mail-Adresse) die mit Ihrem Konto verknüpft sind), den Namen Ihrer Organisation und die Domain, die Sie zur Erstellung der API Anrufverwaltung. Bei Edge Cloud ist die Domain beispielsweise https://api.enterprise.apigee.com; Ihre Domain kann jedoch anders sein, wenn Sie mit Edge Private Cloud.
  3. Speichern Sie die Datei setenv.sh.
  4. Führen Sie das Bereitstellungsskript aus:
    ./deploy.sh
    
  5. Wenn die Bereitstellung erfolgreich ist, führen Sie das Aufrufskript aus:
    ./invoke.sh
    

    Das Aufrufskript ruft einen cURL-Befehl auf, der so aussieht:

    curl  http://$org-$env.$api_domain/java-cookbook/json
    

Die Antwort sieht in etwa so aus:

< HTTP/1.1 200 OK
< Date: Tue, 09 May 2017 20:31:08 GMT
< Content-Type: APPLICATION/JSON; CHARSET=UTF-8
< Content-Length: 68
< Connection: keep-alive
< Access-Control-Allow-Origin: *
< ETag: W/"44-RA5ERT/MMLIK54NVBWBSZG"
< X-Powered-By: APIGEE
< Server: Apigee Router
<
* Curl_http_done: called premature == 0
* Connection #0 to host willwitman-test.apigee.net left intact
{"FIRSTNAME":"JOHN","LASTNAME":"DOE","CITY":"SAN JOSE","STATE":"CA"}

Proxy-Ablauf

Hier sehen Sie eine Aufnahme des Trace-Tools, die den Proxyfluss zeigt:

Proxy-Struktur

Dies ist die Struktur des Proxys. Beachten Sie, dass es eine JAR-Datei im apiproxy/resources/java-Verzeichnis. Die JAR-Datei ist erforderlich. Wir stellen es für die Beispiel. Wenn Sie jedoch individuelle Arbeiten durchführen, müssen Sie sie selbst erstellen und in diese Datei kopieren. Standort. Eine Anleitung zum Kompilieren und Bereitstellen eines Java-Callouts finden Sie unter Java-Callout erstellen Callout

java-cookbook

    apiproxy
        java-cookbook.xml
    policies
        responseUppercase.xml
    proxies
        default.xml
    resources
        java
            ResponseUppercase.jar
    targets
        default.xml

Über den Java-Code

Die Java-Callout-Richtlinie führt den folgenden Java-Code aus, der Antwortheader und den Antworttext in Großbuchstaben. Beachten Sie, dass das Programm Apigee-spezifische Pakete verwendet. Diese Pakete Objekte und Methoden bereitstellen, mit denen Sie direkt mit dem Proxy-Ablauf interagieren können. Methoden mit denen Sie Flussvariablen, Header, Nachrichteninhalte und mehr abrufen und festlegen können.

package com.apigeesample;

import com.apigee.flow.execution.ExecutionContext;
import com.apigee.flow.execution.ExecutionResult;
import com.apigee.flow.execution.spi.Execution;
import com.apigee.flow.message.MessageContext;

import java.util.Set; 

public class ResponseUppercase implements Execution{
    public ExecutionResult execute(MessageContext messageContext, ExecutionContext executionContext) {
        try {
            Set headers = messageContext.getMessage().getHeaderNames();
            for (String header : headers) {
                String h = messageContext.getMessage().getHeader(header).toUpperCase();
                messageContext.getMessage().setHeader(header, h);
            }
            String content = messageContext.getMessage().getContent();
            messageContext.getMessage().setContent(content.toUpperCase());
            return ExecutionResult.SUCCESS;
        } catch (Exception e) {
                return ExecutionResult.ABORT;
        }
    }
}

Beispiel-Proxy untersuchen

Wir überlassen es Ihnen, den Proxy zu öffnen und die Dateien zu untersuchen. Hier finden Sie die Java-Callout-Richtlinie. Beachten Sie, wie er auf die Klasse verweist, die das Callout ausführt, und auf die JAR-Datei. Alle Java-Callouts Richtlinien folgen diesem Muster. Siehe auch Java-Callout-Richtlinie.

<JavaCallout name="responseUppercase">         
    <ClassName>com.apigeesample.ResponseUppercase</ClassName>         
    <ResourceURL>java://ResponseUppercase.jar</ResourceURL> 
</JavaCallout>