Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation weitere Informationen
Wenn Sie Java-Callouts zum ersten Mal ausprobieren, empfehlen wir, mit So erstellen Sie Java-Callouts zu beginnen.
In diesem Cookbook-Beispiel wird gezeigt, wie Sie eine einfache JavaCallout-Richtlinie erstellen, die benutzerdefinierten Java-Code im Kontext eines Proxyablaufs ausführt.
Wozu dient der Beispielcode?
Der API-Proxy in diesem Beispiel ruft einen Zieldienst auf, der eine einfache JSON-Antwort zurückgibt. Die Java-Callout-Richtlinie wird auf den Zielantwortfluss platziert. Der Java-Code wandelt die Header und den Inhalt der Antwort in Großbuchstaben um. Es ist ein einfaches Beispiel. Es zeigt jedoch, wie benutzerdefinierter Java-Code im Kontext eines API-Proxys in Edge funktioniert.
Beispiel ausprobieren
Projekt herunterladen
Sie können dieses Projekt aus dem Apigee-Repository api-platform-samples auf GitHub herunterladen.
- Laden Sie api-platform-samples in Ihr System herunter oder klonen Sie es.
- 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
verwenden möchten, nehmen wir auch ein Beispiel an, das dem Maven-Beispiel entspricht.
- Maven muss installiert sein:
mvn -version
- 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. - cd in das
java-cookbool/callout
-Verzeichnis. - Führen Sie Maven aus:
mvn clean package
- Prüfen Sie bei Bedarf, ob die
edge-custom-policy-java-cookbook.jar
-JAR-Datei nachjava-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.
- cd in
api-platform-samples/doc-samples/java-cookbook
. - Achten Sie darauf, dass Ihr Pfad javac enthält.
javac -version
- 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
- 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 ihn ausführen, müssen Sie jedoch eine schnelle Einrichtung vornehmen.
- CD zu
api-platform-samples/doc-samples/java-cookbook
- Falls noch nicht geschehen, öffnen Sie die Datei
../../setup/setenv.sh
und bearbeiten Sie sie wie angegeben mit Ihren Apigee-Kontoinformationen: Ihrem Nutzernamen (die mit Ihrem Konto verknüpfte E-Mail-Adresse), dem Namen Ihrer Organisation und der Domain, die Sie für API-Verwaltungsaufrufe verwenden. Für Edge Cloud ist die Domain beispielsweisehttps://api.enterprise.apigee.com
. Ihre Domain kann sich jedoch unterscheiden, wenn Sie Edge Private Cloud verwenden. - Speichern Sie die Datei
setenv.sh
. - Führen Sie das Bereitstellungsskript aus:
./deploy.sh
- 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"}
Proxyablauf
Dies ist eine Aufnahme des Trace-Tools, das den Ablauf des Proxys zeigt:
Proxy-Struktur
Dies ist die Struktur des Proxys. Im Verzeichnis apiproxy/resources/java
ist eine JAR-Datei enthalten. Die JAR-Datei ist erforderlich. Wir stellen sie für das Beispiel bereit. Wenn Sie jedoch benutzerdefinierte Arbeiten ausführen, müssen Sie sie selbst erstellen und an diesen Speicherort kopieren. Eine Anleitung zum Kompilieren und Bereitstellen eines Java-Callouts finden Sie unter Java-Callout erstellen.
java-cookbook apiproxy java-cookbook.xml policies responseUppercase.xml proxies default.xml resources java ResponseUppercase.jar targets default.xml
Informationen zum Java-Code
Die Java-Callout-Richtlinie führt den folgenden Java-Code aus, der Antwortheader und den Antworttext in Großbuchstaben konvertiert. Beachten Sie, dass das Programm Apigee-spezifische Pakete verwendet. Diese Pakete enthalten Objekte und Methoden, mit denen Sie direkt mit dem Proxyablauf interagieren können. Es gibt 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 prüfen
Wir überlassen es Ihnen, den Proxy zu öffnen und die Dateien zu prüfen. Hier ist die Java-Callout-Richtlinie. Beachten Sie, wie es auf die Klasse, die das Callout ausführt, und die JAR-Datei verweisen. Alle Java-Callout-Richtlinien folgen diesem Muster. Siehe auch Java-Callout-Richtlinie.
<JavaCallout name="responseUppercase"> <ClassName>com.apigeesample.ResponseUppercase</ClassName> <ResourceURL>java://ResponseUppercase.jar</ResourceURL> </JavaCallout>