Usar o SDK do iOS (Swift) gerado para chamar a API - 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 o SDK do iOS (Swift) gerado para chamar a API

Antes de iniciar o procedimento a seguir, você deve concluir as etapas em Gerar SDKs para uma API usando o console do API Gateway para o iOS no Swift e fazer download do arquivo .zip do SDK gerado.

Instalar o SDK móvel da AWS e o SDK gerado pelo API Gateway em um projeto Swift

O procedimento a seguir descreve como instalar o SDK.

Para instalar e usar um SDK do iOS gerado pelo API Gateway no Swift
  1. Extraia o conteúdo do arquivo .zip gerado pelo API Gateway que você baixou anteriormente. Usando a API SimpleCalc, você pode querer renomear a pasta do SDK descompactada para algo como sdk_swift_simple_calc. Nesta pasta do SDK, há um arquivo README.md file e um arquivo Podfile. O arquivo README.md contém as instruções para instalar e usar o SDK. Este tutorial fornece detalhes sobre essas instruções. A instalação utiliza o CocoaPods para importar os componentes necessários do SDK Móvel da AWS. Você deve atualizar o Podfile para importar os SDKs para o projeto Xcode rápida do seu aplicativo Swift. A pasta do SDK não arquivada também contém uma pasta generated-src, que contém o código-fonte do SDK gerado da sua API.

  2. Inicie o Xcode e crie um novo projeto Swift do iOS. Anote o destino do projeto. Você precisará defini-lo no Podfile.

  3. Para importar os componentes necessários do SDK Móvel da AWS no projeto Xcode usando o CocoaPods, faça o seguinte:

    1. Se o CocoaPods não estiver instalado, instale-o executando o seguinte comando em uma janela de terminal:

      sudo gem install cocoapods pod setup
    2. Copie o arquivo Podfile da pasta do SDK extraído no mesmo diretório que contém seu arquivo de projeto Xcode. Substitua o seguinte bloco:

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

      pelo nome de destino do seu projeto, conforme mostrado:

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

      Se o seu projeto Xcode já contiver um Podfile com o destino correto, basta adicionar a seguinte linha de código ao loop do ... end:

      pod 'AWSAPIGateway', '~> 2.4.7'
    3. Abra uma janela de terminal e execute o seguinte comando no diretório do aplicativo:

      pod install

      Isso instala o componente do API Gateway e quaisquer componentes dependentes do SDK Móvel da AWS no projeto do aplicativo.

    4. Feche o projeto Xcode e abra o arquivo *.xcworkspace para reiniciar o Xcode.

    5. Adicione todos os arquivos de cabeçalho do SDK (.h) e arquivos de código-fonte Swift (.swift) do diretório extraído generated-src para seu projeto Xcode.

    6. Para permitir a chamada de bibliotecas Objective-C do SDK Móvel da AWS a partir do seu projeto de código Swift, defina o caminho do arquivo Bridging_Header.h na propriedade Objective-C Bridging Header (Cabeçalho ponte Objective-C), na definição Swift Compiler - General (Compilador Swift - Geral) da configuração do projeto Xcode:

      dica

      Você pode digitar bridging na caixa de pesquisa do Xcode para localizar a propriedade Objective-C Bridging Header (Cabeçalho ponte Objective-C).

    7. Construa o projeto Xcode para verificar se ele está corretamente configurado antes de prosseguir. Se o seu Xcode usar uma versão mais recente do Swift do que a versão com suporte para o SDK Móvel da AWS, você receberá erros do compilador Swift. Nesse caso, defina a propriedade Use Legacy Swift Language Version (Usar versão de linguagem do Swift legado) para Yes (Sim), na configuração Swift Compiler - Version (Compilador Swift - Versão):

    Para importar o AWS Mobile SDK for iOS em Swift no seu projeto fazendo download explicitamente do AWS Mobile SDK ou usando o Carthage, siga as instruções no arquivo README.md que acompanha o pacote do SDK. Certifique-se de usar apenas uma dessas opções para importar o SDK Móvel da AWS.

Chamar métodos de API por meio do SDK do iOS gerado pelo API Gateway em um projeto Swift

Quando você gerou o SDK com o prefixo de SIMPLE_CALC para essa API SimpleCalc com dois modelos para descrever a entrada (Input) e a saída (Result) das solicitações e respostas da API, no SDK, a classe de cliente de API resultante torna-se SIMPLE_CALCSimpleCalcClient e as classes de dados correspondentes são SIMPLE_CALCInput e SIMPLE_CALCResult, respectivamente. As solicitações e respostas da API são mapeadas para os métodos do SDK, da seguinte maneira:

  • A solicitação de API de

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

    torna-se o método SDK de

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

    A propriedade AWSTask.result é do tipo SIMPLE_CALCResult, se o modelo Result foi adicionado à resposta do método. Caso contrário, ela será do tipo NSDictionary.

  • Essa solicitação de API de

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

    torna-se o método SDK de

    public func rootPost(body: SIMPLE_CALCInput) -> AWSTask
  • A solicitação de API de

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

    torna-se o método SDK de

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

O procedimento a seguir descreve como chamar os métodos de API no código-fonte do aplicativo Swift; por exemplo, como parte do viewDidLoad() delegado em um arquivo ViewController.m.

Como chamar a API por meio do SDK do iOS gerado pelo API Gateway
  1. Instancie a classe de cliente da API:

    let client = SIMPLE_CALCSimpleCalcClient.default()

    Para usar o Amazon Cognito com a API, defina uma configuração de serviço da AWS padrão (mostrada a seguir) antes de obter o método default (mostrado anteriormente):

    let credentialsProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.USEast1, identityPoolId: "my_pool_id") let configuration = AWSServiceConfiguration(region: AWSRegionType.USEast1, credentialsProvider: credentialsProvider) AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
  2. Chame o método GET /?a=1&b=2&op=+ para realizar 1+2:

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

    em que a função auxiliar self.showResult(task) imprime o resultado ou o erro no console; por exemplo:

    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)") } } }

    Em um aplicativo de produção, você pode exibir o resultado ou erro em um campo de texto. A exibição resultante é 1 + 2 = 3.

  3. Chame a carga POST / para realizar 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 }

    A exibição resultante é 1 - 2 = -1.

  4. ChameGET /{a}/{b}/{op} para realizar 1/2:

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

    A exibição resultante é 1 div 2 = 0.5. Aqui, div é usado no lugar de / porque a função do Lambda simples no backend não manuseia variáveis de caminho codificadas por URL.