Usar um SDK Java gerado pelo API Gateway para uma API REST - Amazon API Gateway

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usar um SDK Java gerado pelo API Gateway para uma API REST

Nesta seção, descreveremos as etapas para usar um SDK Java gerado pelo API Gateway para uma API REST ao utilizar a API de Calculadora simples como exemplo. Antes de prosseguir, você deve concluir as etapas em Gerar SDKs para uma API usando o console do API Gateway.

Para instalar e usar um SDK Java gerado pelo API Gateway
  1. Extraia o conteúdo do arquivo .zip gerado pelo API Gateway que você baixou anteriormente.

  2. Baixe e instale o Apache Maven (deve ser a versão 3.5 ou posterior).

  3. Faça download e instale o JDK 8.

  4. Defina a variável de ambiente JAVA_HOME.

  5. Acesse a pasta do SDK descompactada na qual o arquivo pom.xml está localizado. Essa pasta é generated-code por padrão. Execute o comando mvn install para instalar os arquivos de artefato compilados no seu repositório Maven local. Isso cria uma pasta target, que contém a biblioteca SDK compilada.

  6. Digite o comando a seguir para criar um stub de projeto de cliente para chamar a API usando a biblioteca SDK instalada.

    mvn -B archetype:generate \ -DarchetypeGroupdId=org.apache.maven.archetypes \ -DgroupId=examples.aws.apig.simpleCalc.sdk.app \ -DartifactId=SimpleCalc-sdkClient
    nota

    O separador \ no comando anterior é incluído para facilitar a leitura. O comando inteiro deve estar em uma única linha, sem separadores.

    Esse comando cria um stub de aplicativo. O stub do aplicativo contém um arquivo pom.xml e uma pasta src no diretório raiz do projeto (SimpleCalc-sdkClient no comando anterior). Inicialmente, há dois arquivos de origem: src/main/java/{package-path}/App.java e src/test/java/{package-path}/AppTest.java. Neste exemplo, {package-path} é examples/aws/apig/simpleCalc/sdk/app. Este caminho de pacote é derivado do valor DarchetypeGroupdId. Você pode usar o arquivo App.java como um modelo para o seu aplicativo cliente e pode adicionar outros na mesma pasta, se necessário. Você pode usar o arquivo AppTest.java como modelo de teste unitário para o seu aplicativo e pode adicionar outros arquivos de código de teste à mesma pasta de teste, conforme necessário.

  7. Atualize as dependências de pacotes no arquivo pom.xml gerado para o seguinte, substituindo as propriedades groupId, artifactId, version e name do seu projeto, se necessário:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>examples.aws.apig.simpleCalc.sdk.app</groupId> <artifactId>SimpleCalc-sdkClient</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>SimpleCalc-sdkClient</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-core</artifactId> <version>1.11.94</version> </dependency> <dependency> <groupId>my-apig-api-examples</groupId> <artifactId>simple-calc-sdk</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
    nota

    Quando uma versão mais recente do artefato dependente de aws-java-sdk-core não for compatível com a versão especificada acima (1.11.94), você deve atualizar a tag <version> para a nova versão.

  8. Em seguida, mostramos como chamar a API com o uso do SDK, chamando os métodos getABOp(GetABOpRequest req), getApiRoot(GetApiRootRequest req) e postApiRoot(PostApiRootRequest req) do SDK. Esses métodos correspondem aos métodos GET /{a}/{b}/{op}, GET /?a={x}&b={y}&op={operator} e POST /, com uma carga de solicitações da API {"a": x, "b": y, "op": "operator"}, respectivamente.

    Atualize o arquivo App.java da seguinte maneira:

    package examples.aws.apig.simpleCalc.sdk.app; import java.io.IOException; import com.amazonaws.opensdk.config.ConnectionConfiguration; import com.amazonaws.opensdk.config.TimeoutConfiguration; import examples.aws.apig.simpleCalc.sdk.*; import examples.aws.apig.simpleCalc.sdk.model.*; import examples.aws.apig.simpleCalc.sdk.SimpleCalcSdk.*; public class App { SimpleCalcSdk sdkClient; public App() { initSdk(); } // The configuration settings are for illustration purposes and may not be a recommended best practice. private void initSdk() { sdkClient = SimpleCalcSdk.builder() .connectionConfiguration( new ConnectionConfiguration() .maxConnections(100) .connectionMaxIdleMillis(1000)) .timeoutConfiguration( new TimeoutConfiguration() .httpRequestTimeout(3000) .totalExecutionTimeout(10000) .socketTimeout(2000)) .build(); } // Calling shutdown is not necessary unless you want to exert explicit control of this resource. public void shutdown() { sdkClient.shutdown(); } // GetABOpResult getABOp(GetABOpRequest getABOpRequest) public Output getResultWithPathParameters(String x, String y, String operator) { operator = operator.equals("+") ? "add" : operator; operator = operator.equals("/") ? "div" : operator; GetABOpResult abopResult = sdkClient.getABOp(new GetABOpRequest().a(x).b(y).op(operator)); return abopResult.getResult().getOutput(); } public Output getResultWithQueryParameters(String a, String b, String op) { GetApiRootResult rootResult = sdkClient.getApiRoot(new GetApiRootRequest().a(a).b(b).op(op)); return rootResult.getResult().getOutput(); } public Output getResultByPostInputBody(Double x, Double y, String o) { PostApiRootResult postResult = sdkClient.postApiRoot( new PostApiRootRequest().input(new Input().a(x).b(y).op(o))); return postResult.getResult().getOutput(); } public static void main( String[] args ) { System.out.println( "Simple calc" ); // to begin App calc = new App(); // call the SimpleCalc API Output res = calc.getResultWithPathParameters("1", "2", "-"); System.out.printf("GET /1/2/-: %s\n", res.getC()); // Use the type query parameter res = calc.getResultWithQueryParameters("1", "2", "+"); System.out.printf("GET /?a=1&b=2&op=+: %s\n", res.getC()); // Call POST with an Input body. res = calc.getResultByPostInputBody(1.0, 2.0, "*"); System.out.printf("PUT /\n\n{\"a\":1, \"b\":2,\"op\":\"*\"}\n %s\n", res.getC()); } }

    No exemplo anterior, as definições de configuração usadas para instanciar o cliente SDK são para fins ilustrativos e não são necessariamente as melhores práticas recomendadas. Além disso, a chamada de sdkClient.shutdown() é opcional, especialmente se você precisa de um controle preciso sobre quando liberar recursos.

Mostramos os padrões essenciais para chamar uma API usando um SDK do Java. É possível estender as instruções para chamar outros métodos de API.