Estás consultando la documentación de Apigee Edge.
Consulta la
documentación de Apigee X. Información
Si estás probando un texto destacado de Java por primera vez, te recomendamos que comiences con la sección Cómo crear un texto destacado de Java.
En esta guía de soluciones de ejemplo, se muestra cómo crear una política Javatexto simple que ejecute código Java personalizado dentro del contexto de un flujo de proxy.
¿Qué hace el código de muestra?
En este ejemplo, el proxy de API llama a un servicio de destino que muestra una respuesta JSON simple. La política Java Highlight se coloca en el flujo de respuesta del objetivo. El código Java convierte los encabezados y el contenido de la respuesta en letras mayúsculas. Es un ejemplo sencillo; sin embargo, ilustra cómo hacer que un código Java personalizado funcione en el contexto de un proxy de API en Edge.
Prueba la muestra
Descarga el proyecto
Para simplificar el proceso, puedes descargar este proyecto del repositorio api-platform-samples de Apigee en GitHub.
- Descarga o clona api-platform-samples en tu sistema.
- En un editor de código o terminal de tu elección, ve al proyecto
api-platform-samples/doc-samples/java-cookbook
.
Compila tu código con Maven
El proyecto está configurado para que puedas compilar con Maven. Si deseas usar javac
, también incluiremos un ejemplo siguiendo el ejemplo de Maven.
- Asegúrate de tener Maven instalado:
mvn -version
- Ejecuta la siguiente secuencia de comandos
java-cookbook/buildsetup.sh
. Esta secuencia de comandos instala las dependencias JAR necesarias en tu repositorio local de Maven. - cd al directorio
java-cookbool/callout
. - Ejecuta Maven:
mvn clean package
- Si lo deseas, verifica que el archivo JAR
edge-custom-policy-java-cookbook.jar
se copió enjava-cookbook/apiproxy/resources/java
. Esta es la ubicación requerida para los archivos JAR que deseas implementar con un proxy.
Compila con javac
Si quieres usar javac
para compilar el código, puedes hacer algo similar a lo siguiente (desde el directorio java-cookbook
). Los archivos JAR necesarios se proporcionan en el directorio java-cookbook/lib
.
- cd a
api-platform-samples/doc-samples/java-cookbook
. - Asegúrate de tener javac en tu ruta de acceso.
javac -version
- Ejecuta el siguiente comando de javac:
javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/ResponseUppercase.java
- Copia el archivo JAR al directorio apiproxy/resources/java. Esta es la ubicación requerida para los archivos JAR que deseas implementar con un proxy.
cp com/apigeesample/ResponseUppercase.class apiproxy/resources/java
Implementa y llama al proxy
Se proporciona una secuencia de comandos de implementación en el directorio ./java-cookbook
. Pero antes de ejecutarlo, debes realizar una configuración rápida.
- Ve a
api-platform-samples/doc-samples/java-cookbook
- Si aún no lo hiciste, abre el archivo
../../setup/setenv.sh
y edítalo como se indica con la información de tu cuenta de Apigee: tu nombre de usuario (la dirección de correo electrónico asociada con tu cuenta), el nombre de tu organización y el dominio que usas para realizar llamadas de administración de API. Por ejemplo, para la nube perimetral, el dominio eshttps://api.enterprise.apigee.com
. Sin embargo, el dominio puede ser diferente si usas la nube privada perimetral. - Guarda el archivo
setenv.sh
. - Ejecuta la secuencia de comandos de implementación:
./deploy.sh
- Si la implementación se realiza correctamente, ejecuta la secuencia de comandos de invocación:
./invoke.sh
La secuencia de comandos de invocación llama a un comando cURL similar al siguiente:
curl http://$org-$env.$api_domain/java-cookbook/json
La respuesta es similar a la siguiente:
< 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"}
Flujo de proxy
Esta es una toma de la herramienta de seguimiento que muestra el flujo del proxy:
Estructura del proxy
Esta es la estructura del proxy. Ten en cuenta que se incluye un archivo JAR en el directorio apiproxy/resources/java
. El JAR es obligatorio. Lo proporcionamos para la muestra, pero si realizas un trabajo personalizado, debes compilarlo tú mismo y copiarlo en esta ubicación. Para obtener orientación sobre la compilación y la implementación de un texto destacado de Java, consulta Cómo crear un texto destacado de Java.
java-cookbook apiproxy java-cookbook.xml policies responseUppercase.xml proxies default.xml resources java ResponseUppercase.jar targets default.xml
Información acerca del código Java
La política de texto destacado de Java ejecuta el siguiente código Java, que convierte los encabezados de respuesta y el cuerpo de la respuesta en mayúsculas. Ten en cuenta que el programa usa paquetes específicos de Apigee. Estos paquetes proporcionan objetos y métodos que puedes usar para interactuar directamente con el flujo del proxy. Existen métodos que te permiten obtener y establecer variables de flujo, encabezados, contenido de mensajes y mucho más.
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; } } }
Examina el proxy de muestra
Te dejamos que abras el proxy y examines los archivos. Esta es la política Java Featured. Observa cómo hace referencia a la clase que ejecuta la llamada y al archivo JAR. Todas las políticas de texto destacado de Java siguen este patrón. Consulte también la política de texto destacado de Java.
<JavaCallout name="responseUppercase"> <ClassName>com.apigeesample.ResponseUppercase</ClassName> <ResourceURL>java://ResponseUppercase.jar</ResourceURL> </JavaCallout>