Convierte la respuesta en mayúsculas con un texto destacado de Java

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Si está probando el texto destacado de Java por primera vez, le recomendamos que comience con Cómo crear un texto destacado de Java texto destacado.

Esta guía de soluciones de ejemplo muestra cómo crear una política JavaTexto simple que se ejecute código Java personalizado en el contexto de un flujo de proxy.

¿Qué hace el código de muestra?

El proxy de API en este ejemplo llama a un servicio de destino que muestra una respuesta JSON simple. El La política de Texto destacado de Java se coloca en el flujo de respuesta de destino. El código Java convierte los encabezados y el contenido de la respuesta a letras mayúsculas. Es un ejemplo sencillo. pero ilustra cómo para lograr que funcione el código Java personalizado 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.

  1. Descarga o clona api-platform-samples en tu sistema.
  2. 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 quieres usar javac, también incluiremos un ejemplo siguiendo el ejemplo de Maven.

  1. Asegúrate de tener instalado Maven:
    mvn -version
    
  2. 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.
  3. cd al directorio java-cookbool/callout.
  4. Ejecuta Maven:
    mvn clean package
    
  5. Si lo deseas, verifica que el archivo JAR edge-custom-policy-java-cookbook.jar se copió en java-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.

  1. cd a api-platform-samples/doc-samples/java-cookbook.
  2. Asegúrate de tener javac en tu ruta de acceso.

    javac -version
    
  3. Ejecuta el siguiente comando javac:

    javac -d . -classpath ./lib/expressions-1.0.0.jar:./lib/message-flow-1.0.0.jar:. callout/src/main/java/ResponseUppercase.java
    
  4. 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 correr debes hacer una configuración rápida.

  1. Ve a api-platform-samples/doc-samples/java-cookbook
  2. Si aún no lo hiciste, abre el archivo ../../setup/setenv.sh y edítalo. tal como se indica en la información de tu cuenta de Apigee: tu nombre de usuario (la dirección de correo electrónico asociado a tu cuenta), el nombre de tu organización y el dominio que usas para hacer que las APIs a las de administración de datos. Por ejemplo, en la nube perimetral, el dominio es https://api.enterprise.apigee.com; Sin embargo, tu dominio puede ser diferente si estás con la nube privada perimetral.
  3. Guarda el archivo setenv.sh.
  4. Ejecuta la secuencia de comandos de implementación:
    ./deploy.sh
    
  5. 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 que se ve de la siguiente manera:

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

La respuesta se ve más o menos así:

< 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 proxy

Esta es una toma de la herramienta de seguimiento que muestra el flujo del proxy:

Estructura de proxy

Esta es la estructura del proxy. Ten en cuenta que incluye un archivo JAR apiproxy/resources/java. El archivo JAR es obligatorio. La proporcionamos por pero, si haces trabajos personalizados, debes compilarlo tú mismo y copiarlo 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. texto destacado.

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 las del cuerpo de la respuesta a mayúsculas. Ten en cuenta que el programa usa paquetes específicos de Apigee. Estos paquetes proporcionar objetos y métodos que puedes usar para interactuar directamente con el flujo del proxy. Métodos que te permiten obtener y configurar 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 abrir el proxy y examinar los archivos. A continuación, se detalla la política de Java Texto destacado. Observa cómo hace referencia a la clase que ejecuta la llamada y al archivo JAR. Todo el texto destacado de Java las políticas siguen este patrón. Consulta también la política de Texto destacado de Java.

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