Converter a resposta em maiúsculas com uma frase de destaque Java

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Se você estiver testando as chamadas em Java pela primeira vez, recomendamos começar com Como criar uma chamada em Java.

Este exemplo de livro de receitas mostra como criar uma política Java callout simples que executa o código Java personalizado no contexto de um fluxo de proxy.

O que o exemplo de código faz?

O proxy de API neste exemplo chama um serviço de destino que retorna uma resposta JSON simples. A política de chamadas em Java é colocada no fluxo de resposta de destino. O código Java converte os cabeçalhos e o conteúdo da resposta em letras maiúsculas. É um exemplo simples, mas ilustra como conseguir o código Java personalizado funcionando no contexto de um proxy de API no Edge.

Testar o exemplo

Fazer o download do projeto

Para simplificar, faça o download deste projeto do repositório api-platform-samples da Apigee no GitHub.

  1. Faça o download ou clone api-platform-samples no seu sistema.
  2. Em um terminal ou editor de código de sua escolha, acesse o projeto api-platform-samples/doc-samples/java-cookbook.

Compilar o código com o Maven

O projeto é configurado para que você possa compilar com o Maven. Se você quiser usar javac, também incluiremos um exemplo, seguindo o exemplo do Maven.

  1. Verifique se o Maven está instalado:
    mvn -version
    
  2. Execute o script a java-cookbook/buildsetup.sh. Esse script instala as dependências JAR necessárias no seu repositório Maven local.
  3. cd para o diretório java-cookbool/callout.
  4. Execute o Maven:
    mvn clean package
    
  5. Se você quiser, verifique se o arquivo JAR edge-custom-policy-java-cookbook.jar foi copiado para java-cookbook/apiproxy/resources/java. Este é o local necessário para os arquivos JAR que você quer implantar com um proxy.

Compilar com javac

Se você quiser usar javac para compilar o código, faça algo semelhante ao seguinte (do diretório java-cookbook). Os arquivos JAR necessários são fornecidos a você no diretório java-cookbook/lib.

  1. cd para api-platform-samples/doc-samples/java-cookbook.
  2. Verifique se você tem javac no seu caminho.

    javac -version
    
  3. Execute o seguinte 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. Copie o arquivo JAR para o diretório apiproxy/resources/java. Esse é o local necessário para os arquivos JAR que você quer implantar com um proxy.

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

Implantar e chamar o proxy

Um script de implantação é fornecido no diretório ./java-cookbook. Mas, antes de executá-lo, você precisa fazer uma configuração rápida.

  1. cd para api-platform-samples/doc-samples/java-cookbook
  2. Se você ainda não tiver feito isso, abra o arquivo ../../setup/setenv.sh e edite-o conforme indicado nas informações da sua conta da Apigee: seu nome de usuário (o endereço de e-mail associado à sua conta), o nome da organização e o domínio usado para fazer chamadas de gerenciamento de API. Por exemplo, para a nuvem de borda, o domínio é https://api.enterprise.apigee.com. No entanto, seu domínio poderá ser diferente se você estiver usando a nuvem privada do Edge.
  3. Salve o arquivo setenv.sh.
  4. Execute o script de implantação:
    ./deploy.sh
    
  5. Se a implantação for bem-sucedida, execute o script de invocação:
    ./invoke.sh
    

    O script de invocação chama um comando cURL que tem a seguinte aparência:

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

A resposta é semelhante a esta:

< 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"}

Fluxo do proxy

Esta é uma captura da ferramenta de rastreamento mostrando o fluxo do proxy:

Estrutura do proxy

Esta é a estrutura do proxy. Observe que ela inclui um arquivo JAR no diretório apiproxy/resources/java. O JAR é obrigatório. Nós o fornecemos para o exemplo, mas se você estiver fazendo um trabalho personalizado, precisará criá-lo por conta própria e copiá-lo para este local. Para orientações sobre a compilação e a implantação de uma frase de destaque em Java, consulte Como criar uma frase de destaque em Java.

java-cookbook

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

Sobre o código Java

Essa política executa o código Java a seguir, que converte os cabeçalhos e o corpo da resposta em letras maiúsculas. Observe que o programa usa pacotes específicos da Apigee. Esses pacotes fornecem objetos e métodos que podem ser usados para interagir diretamente com o fluxo do proxy. Existem métodos que permitem receber e definir variáveis de fluxo, cabeçalhos, conteúdo das mensagens e muito mais.

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;
        }
    }
}

Examine o proxy de amostra

Deixe com você a opção de abrir o proxy e examinar os arquivos. Esta é a política de chamadas em Java. Observe como ela faz referência à classe executada pela frase de destaque e ao arquivo JAR. Todas as políticas de frases de destaque do Java seguem esse padrão. Consulte também a política de frases de destaque Java.

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