

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan Java SDK yang dihasilkan oleh API Gateway untuk REST API
<a name="how-to-call-apigateway-generated-java-sdk"></a>

Di bagian ini, kami menguraikan langkah-langkah untuk menggunakan Java SDK yang dihasilkan oleh API Gateway untuk REST API, dengan menggunakan [Simple Calculator](simple-calc-lambda-api-swagger-definition.md) API sebagai contoh. Sebelum melanjutkan, Anda harus menyelesaikan langkah-langkahnya. [Hasilkan SDKs untuk REST APIs di API Gateway](how-to-generate-sdk.md) 

**Untuk menginstal dan menggunakan Java SDK yang dihasilkan oleh API Gateway**

1. Ekstrak konten file.zip yang dihasilkan API Gateway yang Anda unduh sebelumnya.

1. Unduh dan instal [Apache Maven](https://maven.apache.org/) (harus versi 3.5 atau lebih baru).

1. Unduh dan instal [JDK 8](https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html).

1. Mengatur variabel `JAVA_HOME` lingkungan.

1.  Buka folder SDK yang tidak di-zip tempat file pom.xml berada. Folder ini secara `generated-code` default. Jalankan **mvn install** perintah untuk menginstal file artefak yang dikompilasi ke repositori Maven lokal Anda. Ini membuat `target` folder yang berisi pustaka SDK yang dikompilasi. 

1.  Ketik perintah berikut di direktori kosong untuk membuat rintisan proyek klien untuk memanggil API menggunakan pustaka SDK yang diinstal. 

   ```
   mvn -B archetype:generate \
       -DarchetypeGroupdId=org.apache.maven.archetypes \
       -DgroupId=examples.aws.apig.simpleCalc.sdk.app \
       -DartifactId=SimpleCalc-sdkClient
   ```
**catatan**  
 Pemisah `\` dalam perintah sebelumnya disertakan untuk keterbacaan. Seluruh perintah harus pada satu baris tanpa pemisah. 

    Perintah ini menciptakan sebuah rintisan aplikasi. Aplikasi rintisan berisi `pom.xml` file dan `src` folder di bawah direktori root proyek (*SimpleCalc-sdkClient*dalam perintah sebelumnya). Awalnya, ada dua file sumber: `src/main/java/{package-path}/App.java` dan`src/test/java/{package-path}/AppTest.java`. Dalam contoh ini, *\$1package-path\$1* adalah`examples/aws/apig/simpleCalc/sdk/app`. Jalur paket ini berasal dari `DarchetypeGroupdId` nilai. Anda dapat menggunakan `App.java` file sebagai template untuk aplikasi klien Anda, dan Anda dapat menambahkan yang lain di folder yang sama jika diperlukan. Anda dapat menggunakan `AppTest.java` file sebagai templat pengujian unit untuk aplikasi Anda, dan Anda dapat menambahkan file kode pengujian lainnya ke folder pengujian yang sama sesuai kebutuhan. 

1. Perbarui dependensi paket dalam `pom.xml` file yang dihasilkan menjadi berikut, ganti `name` properti proyek`groupId`,, dan Anda `artifactId``version`, jika perlu:

   ```
   <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>
   ```
**catatan**  
 Ketika versi artefak dependen yang lebih baru tidak `aws-java-sdk-core` kompatibel dengan versi yang ditentukan di atas (`1.11.94`), Anda harus memperbarui `<version>` tag ke versi baru.

1.  Selanjutnya, kami menunjukkan cara memanggil API menggunakan SDK dengan memanggil`getABOp(GetABOpRequest req)`,`getApiRoot(GetApiRootRequest req)`, dan `postApiRoot(PostApiRootRequest req)` metode SDK. Metode ini sesuai dengan`GET /{a}/{b}/{op}`,`GET /?a={x}&b={y}&op={operator}`, dan `POST /` metode, dengan muatan permintaan `{"a": x, "b": y, "op": "operator"}` API, masing-masing. 

    Perbarui `App.java` file sebagai berikut: 

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

    Dalam contoh sebelumnya, pengaturan konfigurasi yang digunakan untuk membuat instance klien SDK adalah untuk tujuan ilustrasi dan belum tentu direkomendasikan praktik terbaik. Selain itu, menelepon `sdkClient.shutdown()` adalah opsional, terutama jika Anda memerlukan kontrol yang tepat kapan harus membebaskan sumber daya. 

 Kami telah menunjukkan pola penting untuk memanggil API menggunakan Java SDK. Anda dapat memperluas instruksi untuk memanggil metode API lainnya. 