Uso de un SDK de Java generado por API Gateway para una API REST - Amazon API Gateway

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de un SDK de Java generado por API Gateway para una API REST

En esta sección se describen los pasos para utilizar un SDK de Java generado por API Gateway para una API REST mediante la API Calculadora simple como ejemplo. Antes de continuar, debe completar los pasos de Generación de SDK para una API mediante la consola de API Gateway.

Para instalar y utilizar un SDK de Java generado por API Gateway
  1. Extraiga el contenido del archivo .zip generado por API Gateway que ha descargado anteriormente.

  2. Descargue e instale Apache Maven (versión 3.5 o posterior).

  3. Descargar e instalar JDK 8.

  4. Establezca la variable de entorno JAVA_HOME.

  5. Vaya a la carpeta SDK descomprimida donde se encuentra el archivo pom.xml. Esta carpeta es generated-code de forma predeterminada. Ejecute el comando mvn install para instalar los archivos de artefactos compilados en el repositorio de Maven local. Se creará una carpeta target con la biblioteca del SDK compilada.

  6. Escriba el comando siguiente en un directorio vacío para crear un stub del proyecto cliente que llame a la API utilizando la biblioteca de SDK instalada.

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

    El separador \ del comando anterior se ha incluido para facilitar la lectura. El comando completo debe estar en una sola línea sin el separador.

    Este comando crea un stub de aplicación. El stub de aplicación contiene un archivo pom.xml y una carpeta src en el directorio raíz del proyecto (SimpleCalc-sdkClient en el comando anterior). Inicialmente, hay dos archivos de código fuente: src/main/java/{package-path}/App.java y src/test/java/{package-path}/AppTest.java. En este ejemplo, {package-path} es examples/aws/apig/simpleCalc/sdk/app. Esta ruta del paquete se obtiene del valor de DarchetypeGroupdId. Puede utilizar el archivo App.java como una plantilla para la aplicación cliente y puede añadir otros archivos en la misma carpeta si es necesario. Puede utilizar el archivo AppTest.java como una plantilla de pruebas unitarias para su aplicación y puede añadir otros archivos de código de prueba en la misma carpeta de pruebas si es necesario.

  7. Actualice las dependencias del paquete en el archivo pom.xml generado de la forma siguiente, sustituyendo las propiedades groupId, artifactId, version y name, si es necesario:

    <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

    Cuando una versión más reciente de un artefacto dependiente de aws-java-sdk-core no es compatible con la versión especificada anteriormente (1.11.94), debe actualizar la etiqueta <version> a la nueva versión.

  8. A continuación, mostramos cómo llamar a la API mediante el SDK llamando a los métodos getABOp(GetABOpRequest req), getApiRoot(GetApiRootRequest req) y postApiRoot(PostApiRootRequest req) del SDK. Estos métodos se corresponden con los métodos GET /{a}/{b}/{op}, GET /?a={x}&b={y}&op={operator} y POST /, con una carga de solicitudes de API {"a": x, "b": y, "op": "operator"}, respectivamente.

    Actualice el archivo App.java como se indica a continuación:

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

    En el ejemplo anterior, los ajustes de configuración que se utilizan para crear instancias del cliente SDK tienen una finalidad ilustrativa y no constituyen necesariamente prácticas recomendadas. Además, la llamada a sdkClient.shutdown() es opcional, especialmente si necesita un control preciso sobre cuándo se liberan los recursos.

Hemos visto los principales patrones para llamar a una API utilizando un SDK de Java. Puede ampliar las instrucciones para llamar a otros métodos de API.