

# API Gateway에서 생성한 REST API용 Android SDK 사용
<a name="how-to-generate-sdk-android"></a>

이 단원에서는 API Gateway에서 생성된 REST API용 Android SDK의 사용 단계를 살펴봅니다. [API Gateway에서 REST API SDK 생성](how-to-generate-sdk.md)의 단계를 이미 완료한 경우에만 계속 진행할 수 있습니다.

**참고**  
 생성된 SDK는 Android 4.4 이하 버전에서는 호환되지 않습니다. 자세한 내용은 [Amazon API Gateway 중요 정보](api-gateway-known-issues.md) 단원을 참조하십시오.

**API Gateway가 생성한 Android SDK 설치 및 사용 방법**

1. 앞서 다운로드한 API Gateway가 생성한 .zip 파일의 압축을 풉니다.

1. [Apache Maven](https://maven.apache.org/)(버전 3.x 권장)을 다운로드하여 설치합니다.

1. [JDK 8](https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html)을 다운로드하여 설치합니다.

1. `JAVA_HOME` 환경 변수를 설정합니다.

1. **mvn install** 명령을 실행해 컴파일된 아티팩트 파일을 로컬 Maven 리포지토리에 설치합니다. 그러면 컴파일된 SDK 라이브러리를 포함하는 `target` 폴더가 생성됩니다.

1. `target` 폴더에서 SDK 파일(이름은 SDK를 생성할 때 지정한 **아티팩트 ID(Artifact Id)** 및 **아티팩트 버전(Artifact Version)**에서 파생됨(예: `simple-calcsdk-1.0.0.jar`))을 `target/lib` 폴더의 다른 모든 라이브러리와 함께 프로젝트의 `lib` 폴더로 복사합니다.

   Android Studio를 사용하는 경우, 클라이언트 앱 모듈에 `libs` 폴더를 생성하고 필수 .jar 파일을 복사하여 이 폴더에 붙여 넣습니다. 모듈의 gradle 파일에 있는 종속성 섹션에 다음이 포함되어 있는지 확인합니다.

   ```
       compile fileTree(include: ['*.jar'], dir: 'libs')
       compile fileTree(include: ['*.jar'], dir: 'app/libs')
   ```

   복제된 .jar 파일이 선언되지 않도록 합니다.

1. `ApiClientFactory` 클래스를 사용하여 API Gateway에서 생성한 SDK를 초기화합니다. 예:

   ```
   ApiClientFactory factory = new ApiClientFactory();
   
   // Create an instance of your SDK. Here, 'SimpleCalcClient.java' is the compiled java class for the SDK generated by API Gateway. 
   final SimpleCalcClient client = factory.build(SimpleCalcClient.class);
   
   // Invoke a method: 
   //   For the 'GET /?a=1&b=2&op=+' method exposed by the API, you can invoke it by calling the following SDK method:
   
   Result output = client.rootGet("1", "2", "+");
   
   //     where the Result class of the SDK corresponds to the Result model of the API.
   //
   
   //   For the 'GET /{a}/{b}/{op}'  method exposed by the API, you can call the following SDK method to invoke the request,
   
   Result output = client.aBOpGet(a, b, c);
   
   //     where a, b, c can be "1", "2", "add", respectively.
   
   //   For the following API method:
   //        POST /
   //        host: ...
   //        Content-Type: application/json
   //    
   //        { "a": 1, "b": 2, "op": "+" }
   // you can call invoke it by calling the rootPost method of the SDK as follows:
   Input body = new Input();
   input.a=1;
   input.b=2;
   input.op="+";
   Result output = client.rootPost(body);
   
   //      where the Input class of the SDK corresponds to the Input model of the API.
   
   // Parse the result:
   //     If the 'Result' object is { "a": 1, "b": 2, "op": "add", "c":3"}, you retrieve the result 'c') as 
   
   String result=output.c;
   ```

1. Amazon Cognito 자격 증명 제공자를 이용하여 API에 대한 호출에 권한을 부여하려면, 다음 예제와 같이 `ApiClientFactory` 클래스를 사용하여 API Gateway에 의해 생성된 SDK를 통해 일단의 AWS 자격 증명을 전달합니다.

   ```
   // Use CognitoCachingCredentialsProvider to provide AWS credentials
   // for the ApiClientFactory
   AWSCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
           context,          // activity context
           "identityPoolId", // Cognito identity pool id
           Regions.US_EAST_1 // region of Cognito identity pool
   );
   
   ApiClientFactory factory = new ApiClientFactory()
     .credentialsProvider(credentialsProvider);
   ```

1. API Gateway에 의해 생성된 SDK를 사용해 API 키를 설정하려면 다음과 비슷한 코드를 사용합니다.

   ```
   ApiClientFactory factory = new ApiClientFactory()
     .apiKey("YOUR_API_KEY");
   ```