API를 호출하기 위해 생성된 iOS SDK(Swift) 사용 - Amazon API Gateway

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

API를 호출하기 위해 생성된 iOS SDK(Swift) 사용

다음 절차를 시작하기 전에 Swift에서 iOS에 대한 API Gateway 콘솔을 사용하여 API용 SDK 생성의 단계를 완료하고 생성된 SDK에 대한 .zip 파일을 다운로드해야 합니다.

AWS Mobile SDK 및 API Gateway 생성 SDK를 Swift 프로젝트에 설치

다음 절차에서는 SDK를 설치하는 방법을 설명합니다.

Swift에서 API Gateway가 생성한 iOS SDK를 설치하고 사용하려면
  1. 앞서 다운로드한 API Gateway가 생성한 .zip 파일의 압축을 풉니다. SimpleCalc API를 사용하여 압축 해제된 SDK 폴더의 이름을 sdk_swift_simple_calc 등으로 바꿉니다. 이 SDK 폴더에는 README.md 파일과 Podfile 파일이 있습니다. README.md 파일에는 SDK를 설치하고 사용하기 위한 지침이 포함되어 있습니다. 이 자습서는 이러한 지침에 대한 세부 정보를 제공합니다. 설치 시 CocoaPods를 활용해 필요한 AWS Mobile SDK 구성 요소를 가져옵니다. Podfile을 업데이트하여 Swift 앱의 Xcode 프로젝트로 SDK를 가져와야 합니다. 아카이빙을 해제한 SDK 폴더에는 사용자 API에서 생성한 SDK의 소스 코드를 포함하는 generated-src 폴더도 포함되어 있습니다.

  2. Xcode를 시작하고 새로운 iOS Swift 프로젝트를 생성합니다. 프로젝트의 대상을 기록해 둡니다. Podfile에 이를 설정해야 합니다.

  3. CocoaPods를 이용해 필요한 AWS Mobile SDK 구성 요소를 Xcode 프로젝트로 가져오려면 다음과 같이 합니다.

    1. CocoaPods가 아직 설치되어 있지 않은 경우 터미널 창에 다음 명령을 실행하여 설치합니다.

      sudo gem install cocoapods pod setup
    2. 압축을 푼 SDK 폴더에서 Podfile 파일을 복사하여 Xcode 프로젝트 파일을 포함하는 동일 디렉터리에 추가합니다. 다음 블록:

      target '<YourXcodeTarget>' do pod 'AWSAPIGateway', '~> 2.4.7' end

      프로젝트 대상 이름은 다음과 같습니다.

      target 'app_swift_simple_calc' do pod 'AWSAPIGateway', '~> 2.4.7' end

      Xcode 프로젝트에 이미 올바른 대상의 Podfile이 있는 경우, 다음 코드 줄을 do ... end 루프에 추가하기만 하면 됩니다.

      pod 'AWSAPIGateway', '~> 2.4.7'
    3. 터미널 창을 열고 앱 디렉터리에서 다음 명령을 실행합니다.

      pod install

      그러면 앱의 프로젝트에 API Gateway 구성 요소와 종속 AWS Mobile SDK 구성 요소가 설치됩니다.

    4. Xcode 프로젝트를 닫은 후 *.xcworkspace 파일을 열어 Xcode를 다시 시작합니다.

    5. 추출한 .h 디렉터리에서 SDK의 모든 헤더 파일(.swift) 및 Swift 소스 코드 파일(generated-src)을 Xcode 프로젝트에 추가합니다.

    6. Swift 코드 프로젝트에서 AWS Mobile SDK의 Objective-C 라이브러리 호출을 활성화하려면 Xcode 프로젝트 구성의 Swift Compiler - General 설정에서 Objective-C Bridging Header 속성에 Bridging_Header.h 파일 경로를 설정합니다.

      작은 정보

      Xcode의 검색 상자에 bridging을 입력하여 Objective-C Bridging Header 속성을 찾을 수 있습니다.

    7. Xcode 프로젝트를 구축하여 적절하게 구성되어 있는지 확인한 후 다음 단계로 진행합니다. Xcode가 AWS Mobile SDK에 지원되는 Swift보다 최신 버전을 사용하는 경우, Swift 컴파일러 오류를 받게 됩니다. 이 경우 Swift Compiler - Version 설정에서 Use Legacy Swift Language Version 속성을 로 설정합니다.

    AWS Mobile SDK를 명시적으로 다운로드하거나 Carthage를 이용해 Swift에서 AWS Mobile SDK for iOS를 프로젝트로 가져오려면 SDK 패키지와 함께 제공된 README.md 파일의 지침을 따릅니다. 이러한 옵션 중 하나만 사용하여 AWS Mobile SDK를 가져와야 합니다.

Swift 프로젝트에서 API Gateway가 생성한 iOS SDK를 통해 API 메서드 호출

API 요청 및 응답의 입력(Input) 및 출력(Result)을 설명하는 두 가지 모델을 사용하여 이 SimpleCalc API에 대한 SIMPLE_CALC 접두사를 사용하여 SDK를 생성한 경우 SDK에서 결과 API 클라이언트 클래스는 SIMPLE_CALCSimpleCalcClient가 되고 해당 데이터 클래스는 각각 SIMPLE_CALCInputSIMPLE_CALCResult입니다. API 요청 및 응답은 SDK 메서드에 다음과 같이 매핑됩니다.

  • 다음의 API 요청이

    GET /?a=...&b=...&op=...

    다음의 SDK 메서드가 됩니다.

    public func rootGet(op: String?, a: String?, b: String?) -> AWSTask

    AWSTask.result 모델이 메서드 응답에 추가된 경우 SIMPLE_CALCResult 속성은 Result 유형입니다. 그렇지 않으면 NSDictionary 유형입니다.

  • 다음의 이 API 요청이

    POST / { "a": "Number", "b": "Number", "op": "String" }

    다음의 SDK 메서드가 됩니다.

    public func rootPost(body: SIMPLE_CALCInput) -> AWSTask
  • 다음의 API 요청이

    GET /{a}/{b}/{op}

    다음의 SDK 메서드가 됩니다.

    public func aBOpGet(a: String, b: String, op: String) -> AWSTask

다음 절차에서는 Swift 앱 소스 코드에서 API 메서드를 호출하는 방법(예: viewDidLoad() 파일에서 ViewController.m 위임자의 일부로 호출)을 설명합니다.

API Gateway가 생성한 iOS SDK를 통해 API를 호출하려면
  1. API 클라이언트 클래스 인스턴스화:

    let client = SIMPLE_CALCSimpleCalcClient.default()

    API를 통해 Amazon Cognito를 사용하려면 (다음과 같이) 기본 AWS 서비스 구성을 설정한 후, (이전과 같이) default 메서드를 가져옵니다.

    let credentialsProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.USEast1, identityPoolId: "my_pool_id") let configuration = AWSServiceConfiguration(region: AWSRegionType.USEast1, credentialsProvider: credentialsProvider) AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
  2. GET /?a=1&b=2&op=+ 메서드를 호출하여 1+2를 수행합니다.

    client.rootGet("+", a: "1", b:"2").continueWithBlock {(task: AWSTask) -> AnyObject? in self.showResult(task) return nil }

    헬퍼 함수 self.showResult(task)가 콘솔에 결과나 오류를 인쇄합니다. 예:

    func showResult(task: AWSTask) { if let error = task.error { print("Error: \(error)") } else if let result = task.result { if result is SIMPLE_CALCResult { let res = result as! SIMPLE_CALCResult print(String(format:"%@ %@ %@ = %@", res.input!.a!, res.input!.op!, res.input!.b!, res.output!.c!)) } else if result is NSDictionary { let res = result as! NSDictionary print("NSDictionary: \(res)") } } }

    생산 앱에서 텍스트 필드에 결과나 오류를 표시할 수 있습니다. 표시되는 결과는 1 + 2 = 3입니다.

  3. 페이로드와 함께 POST / 메서드를 호출하여 1-2를 수행합니다.

    let body = SIMPLE_CALCInput() body.a=1 body.b=2 body.op="-" client.rootPost(body).continueWithBlock {(task: AWSTask) -> AnyObject? in self.showResult(task) return nil }

    표시되는 결과는 1 - 2 = -1입니다.

  4. GET /{a}/{b}/{op}를 호출하여 1/2를 수행합니다.

    client.aBOpGet("1", b:"2", op:"div").continueWithBlock {(task: AWSTask) -> AnyObject? in self.showResult(task) return nil }

    표시되는 결과는 1 div 2 = 0.5입니다. 여기서 div 자리에 /가 사용되는데, 이유는 백엔드의 간단한 Lambda 함수가 URL로 인코딩된 경로 변수를 처리하지 않기 때문입니다.