

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation d’un kit SDK iOS généré par API Gateway pour une API REST dans Objective-C ou Swift
<a name="how-to-generate-sdk-ios"></a>

Dans ce didacticiel, nous vous expliquons comment utiliser un kit SDK iOS généré à l’aide d’API Gateway pour une API REST dans une application Objective-C ou Swift pour appeler l’API sous-jacente. Nous utiliserons l'[SimpleCalc API](simple-calc-lambda-api.md) comme exemple pour illustrer les sujets suivants :
+ Comment installer les composants du SDK AWS mobile requis dans votre projet Xcode
+ Création de l’objet de client d’API avant d’appeler les méthodes de l’API
+ Appel des méthodes d’API via les méthodes de kit SDK correspondantes sur l’objet de client d’API
+ Préparation d’une entrée de méthode et analyse de son résultat à l’aide des classes de modèle correspondantes du kit SDK

**Topics**
+ [Utilisation d'un kit SDK iOS généré (Objective-C) pour appeler une API](#how-to-use-sdk-ios-objc)
+ [Utilisation d'un kit SDK iOS généré (Swift) pour appeler une API](#how-to-generate-sdk-ios-swift)

## Utilisation d'un kit SDK iOS généré (Objective-C) pour appeler une API
<a name="how-to-use-sdk-ios-objc"></a>

Avant de commencer la procédure suivante, vous devez suivre la procédure décrite dans [Générer SDKs pour REST APIs dans API Gateway](how-to-generate-sdk.md) pour iOS dans Objective-C et télécharger le fichier .zip du kit SDK généré.

### Installer le SDK AWS mobile et un SDK iOS générés par API Gateway dans un projet Objective-C
<a name="use-sdk-ios-objc-install-sdk"></a>

La procédure suivante décrit comment installer le kit SDK.

**Pour installer et utiliser un kit SDK iOS généré par API Gateway dans Objective-C**

1. Extrayez le contenu du fichier .zip généré par API Gateway que vous avez précédemment téléchargé. À l'aide de l'[SimpleCalc API](simple-calc-lambda-api.md), vous souhaiterez peut-être renommer le dossier du SDK décompressé comme suit. **sdk\$1objc\$1simple\$1calc** Dans ce dossier de kit SDK se trouvent un fichier `README.md` et un fichier `Podfile`. Le fichier `README.md` contient les instructions pour installer et utiliser le kit SDK. Ce didacticiel fournit les détails de ces instructions. L'installation s'appuie sur [CocoaPods](https://cocoapods.org)l'importation des bibliothèques API Gateway requises et d'autres composants du SDK AWS mobile dépendants. Vous devez le mettre `Podfile` à jour pour l'importer SDKs dans le projet Xcode de votre application. Le dossier de kit SDK décompressé contient également un dossier `generated-src` qui contient le code source du kit SDK généré de votre API.

1. Lancez Xcode et créez un projet iOS Objective-C. Notez la cible du projet. Vous en avez besoin pour la définir dans le fichier `Podfile`.

      
![\[Recherchez la cible dans Xcode.\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/images/use-sdk-in-ios-objc-project-find-target.png)

1. Pour l'importer Applications mobiles AWS SDK for iOS dans le projet Xcode à l'aide de CocoaPods, procédez comme suit :

   1. Installez CocoaPods en exécutant la commande suivante dans une fenêtre de terminal :

      ```
      sudo gem install cocoapods
      pod setup
      ```

   1. Copiez le fichier `Podfile` à partir du dossier de kit SDK extrait dans le même répertoire contenant votre fichier de projet Xcode. Remplacez le bloc suivant :

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

      avec le nom cible de votre projet : 

      ```
      target 'app_objc_simple_calc' do
          pod 'AWSAPIGateway', '~> 2.4.7'
      end
      ```

      Si votre projet Xcode contient déjà un fichier nommé `Podfile`, ajoutez-lui la ligne de code suivante :

      ```
      pod 'AWSAPIGateway', '~> 2.4.7'
      ```

   1. Ouvrez une fenêtre de terminal et exécutez la commande suivante :

      ```
      pod install
      ```

      Cela installe le composant API Gateway et les autres composants du SDK AWS mobile dépendants.

   1. Fermez le projet Xcode et ouvrez le fichier `.xcworkspace` pour relancer Xcode.

   1. Ajoutez tous les fichiers `.h` et `.m` du répertoire `generated-src` du kit SDK extrait dans votre projet Xcode.

         
![\[Les fichiers .h et .m se trouvent dans generated-src.\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/images/use-sdk-in-ios-objc-project-add-sdk-src.png)

   *Pour importer l' Applications mobiles AWS SDK for iOS Objective-C dans votre projet en téléchargeant explicitement le SDK AWS mobile ou en utilisant [Carthage](https://github.com/Carthage/Carthage#installing-carthage), suivez les instructions du fichier README.md.* Veillez à n'utiliser qu'une seule de ces options pour importer le SDK AWS mobile.

### Appel des méthodes d’API à l’aide du kit SDK iOS généré par API Gateway dans un projet Objective-C
<a name="use-sdk-ios-objc-call-sdk"></a>

Lorsque vous avez généré le SDK avec le préfixe `SIMPLE_CALC` for this [SimpleCalc API](simple-calc-lambda-api.md) avec deux modèles pour l'entrée (`Input`) et la sortie (`Result`) des méthodes, dans le SDK, la classe client d'API résultante devient `SIMPLE_CALCSimpleCalcClient` et, respectivement, les `SIMPLE_CALCInput` classes de données correspondantes. `SIMPLE_CALCResult` Les demandes et réponses d'API sont mappées aux méthodes de kit SDK comme suit :
+ La demande d'API

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

  devient la méthode du kit SDK

  ```
  (AWSTask *)rootGet:(NSString *)op a:(NSString *)a b:(NSString *)b
  ```

  La propriété `AWSTask.result` est de type `SIMPLE_CALCResult` si le modèle `Result` a été ajouté à la réponse de méthode. Sinon, la propriété est de type `NSDictionary`.
+ Cette demande d'API

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

  devient la méthode du kit SDK

  ```
  (AWSTask *)rootPost:(SIMPLE_CALCInput *)body
  ```
+ La demande d'API

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

  devient la méthode du kit SDK

  ```
  (AWSTask *)aBOpGet:(NSString *)a b:(NSString *)b op:(NSString *)op
  ```

La procédure suivante décrit comment appeler les méthodes d’API dans le code source de l’application Objective-C, par exemple, comme faisant partie du délégué `viewDidLoad` dans un fichier `ViewController.m`.

**Pour appeler l'API via le kit SDK iOS généré par API Gateway**

1. Importez le fichier d’en-tête de la classe de client d’API pour que la classe de client d’API puisse être appelée dans l’application :

   ```
   #import "SIMPLE_CALCSimpleCalc.h"
   ```

   La déclaration `#import` importe également `SIMPLE_CALCInput.h` et `SIMPLE_CALCResult.h` pour les deux classes de modèle.

1. Instanciez la classe de client d'API :

   ```
   SIMPLE_CALCSimpleCalcClient *apiInstance = [SIMPLE_CALCSimpleCalcClient defaultClient];
   ```

   Pour utiliser Amazon Cognito avec l’API, définissez la propriété `defaultServiceConfiguration` sur l’objet `AWSServiceManager` par défaut, comme illustré ci-après, avant d’appeler la méthode `defaultClient` pour créer l’objet de client d’API (comme illustré dans l’exemple précédent) :

   ```
   AWSCognitoCredentialsProvider *creds = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:your_cognito_pool_id];
   AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:creds];
   AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
   ```

1. Appelez la méthode `GET /?a=1&b=2&op=+` pour exécuter `1+2` :

   ```
   [[apiInstance rootGet: @"+" a:@"1" b:@"2"] continueWithBlock:^id _Nullable(AWSTask * _Nonnull task) {
       _textField1.text = [self handleApiResponse:task];
       return nil;
   }];
   ```

   où `handleApiResponse:task` de la fonction d’assistant formate le résultat sous forme de chaîne pour l’afficher dans un champ de texte (`_textField1`).

   ```
   - (NSString *)handleApiResponse:(AWSTask *)task {
       if (task.error != nil) {
           return [NSString stringWithFormat: @"Error: %@", task.error.description];
       } else if (task.result != nil && [task.result isKindOfClass:[SIMPLE_CALCResult class]]) {
           return [NSString stringWithFormat:@"%@ %@ %@ = %@\n",task.result.input.a, task.result.input.op, task.result.input.b, task.result.output.c];
       }
       return nil;
   }
   ```

   Le résultat qui s'affiche est `1 + 2 = 3`.

1. Appelez la méthode `POST /` avec une charge utile pour exécuter `1-2` :

   ```
   SIMPLE_CALCInput *input = [[SIMPLE_CALCInput alloc] init];
       input.a = [NSNumber numberWithInt:1];
       input.b = [NSNumber numberWithInt:2];
       input.op = @"-";
       [[apiInstance rootPost:input] continueWithBlock:^id _Nullable(AWSTask * _Nonnull task) {
           _textField2.text = [self handleApiResponse:task];
           return nil;
       }];
   ```

   Le résultat qui s'affiche est `1 - 2 = -1`.

1. Appelez la méthode `GET /{a}/{b}/{op}` pour exécuter `1/2` :

   ```
   [[apiInstance aBOpGet:@"1" b:@"2" op:@"div"] continueWithBlock:^id _Nullable(AWSTask * _Nonnull task) {
       _textField3.text = [self handleApiResponse:task];
       return nil;
   }];
   ```

   Le résultat qui s'affiche est `1 div 2 = 0.5`. Ici, `div` est utilisé à la place de `/`, car la [fonction Lambda simple](simple-calc-nodejs-lambda-function.md) du backend ne gère pas les variables de chemin d'URL codée.

## Utilisation d'un kit SDK iOS généré (Swift) pour appeler une API
<a name="how-to-generate-sdk-ios-swift"></a>

Avant de commencer la procédure suivante, vous devez suivre les étapes décrites dans [Générer SDKs pour REST APIs dans API Gateway](how-to-generate-sdk.md) pour iOS dans Swift et téléchargez le fichier .zip du kit SDK généré.

**Topics**
+ [Installation du SDK AWS mobile et du SDK généré par API Gateway dans un projet Swift](#use-sdk-ios-swift-install-sdk)
+ [Appel des méthodes d’API via le kit SDK iOS généré par API Gateway dans un projet Swift](#use-sdk-ios-swift-call-api)

### Installation du SDK AWS mobile et du SDK généré par API Gateway dans un projet Swift
<a name="use-sdk-ios-swift-install-sdk"></a>

La procédure suivante décrit comment installer le kit SDK.

**Pour installer et utiliser un kit SDK iOS généré par API Gateway dans Swift**

1. Extrayez le contenu du fichier .zip généré par API Gateway que vous avez précédemment téléchargé. À l'aide de l'[SimpleCalc API](simple-calc-lambda-api.md), vous souhaiterez peut-être renommer le dossier du SDK décompressé comme suit. **sdk\$1swift\$1simple\$1calc** Dans ce dossier de kit SDK se trouvent un fichier `README.md` et un fichier `Podfile`. Le fichier `README.md` contient les instructions pour installer et utiliser le kit SDK. Ce didacticiel fournit les détails de ces instructions. L'installation s'appuie sur l'importation [CocoaPods](https://cocoapods.org)des composants du SDK AWS mobile requis. Vous devez le mettre `Podfile` à jour pour l'importer SDKs dans le projet Xcode de votre application Swift. Le dossier de kit SDK décompressé contient également un dossier `generated-src` qui contient le code source du kit SDK généré de votre API.

1. Lancez Xcode et créez un projet iOS Swift. Notez la cible du projet. Vous en avez besoin pour la définir dans le fichier `Podfile`.

      
![\[Recherchez la cible dans Xcode.\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/images/use-sdk-in-ios-swift-project-find-target.png)

1. Pour importer les composants du SDK AWS mobile requis dans le projet Xcode à l'aide de CocoaPods, procédez comme suit :

   1. S'il n'est pas installé, installez-le CocoaPods en exécutant la commande suivante dans une fenêtre de terminal :

      ```
      sudo gem install cocoapods
      pod setup
      ```

   1. Copiez le fichier `Podfile` à partir du dossier de kit SDK extrait dans le même répertoire contenant votre fichier de projet Xcode. Remplacez le bloc suivant :

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

      avec le nom cible de votre projet comme indiqué : 

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

      Si votre fichier de projet Xcode contient un fichier nommé `Podfile` avec la cible correcte, vous pouvez simplement ajouter la ligne de code suivante à la boucle `do ... end` :

      ```
      pod 'AWSAPIGateway', '~> 2.4.7'
      ```

   1. Ouvrez une fenêtre de terminal et exécutez la commande suivante dans le répertoire de l’application :

      ```
      pod install
      ```

      Cela installe le composant API Gateway et tous les composants du SDK AWS mobile dépendants dans le projet de l'application.

   1. Fermez le projet Xcode et ouvrez le fichier `*.xcworkspace` pour relancer Xcode.

   1. Ajoutez tous les fichiers d’en-tête du kit SDK (`.h`) et les fichiers de code source Swift (`.swift`) du répertoire `generated-src` extrait à votre projet Xcode.

         
![\[Les fichiers .h et .swift se trouvent dans generated-src.\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/images/use-sdk-in-ios-swift-project-add-sdk-src.png)

   1. Pour permettre d'appeler les bibliothèques Objective-C du SDK AWS mobile à partir de votre projet de code Swift, définissez le chemin du `Bridging_Header.h` fichier sur la propriété **Objective-C Bridging Header** sous le **compilateur Swift - Paramètre général** de la configuration de votre projet Xcode : 

         
![\[Définissez le chemin du fichier Bridging_Header.h sous Compilateur Swift - Général.\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/images/use-sdk-in-ios-swift-project-set-bridging-header.png)
**Astuce**  
Vous pouvez saisir **bridging** dans la zone de recherche de Xcode pour localiser la propriété **Objective-C Bridging Header (En-tête de transition Objective-C)**.

   1. Créez le projet Xcode pour vérifier qu’il est correctement configuré avant de continuer. Si votre Xcode utilise une version de Swift plus récente que celle prise en charge par le SDK AWS mobile, vous obtiendrez des erreurs de compilation Swift. Dans ce cas, définissez la propriété **Use Legacy Swift Language Version** sur **Yes** sous le paramètre **Swift Compiler - Version** :

         
![\[Définissez la propriété Version héritée du langage Swift sur Oui.\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/images/use-sdk-in-ios-swift-project-set-legacy-swift-version.png)

   Pour importer le SDK AWS mobile pour iOS dans Swift dans votre projet en téléchargeant explicitement AWS le SDK mobile ou en [utilisant](https://github.com/Carthage/Carthage#installing-carthage) Carthage, suivez les instructions du fichier fourni avec `README.md` le package du SDK. Veillez à n'utiliser qu'une seule de ces options pour importer le SDK AWS mobile.

### Appel des méthodes d’API via le kit SDK iOS généré par API Gateway dans un projet Swift
<a name="use-sdk-ios-swift-call-api"></a>

Lorsque vous avez généré le SDK avec le préfixe `SIMPLE_CALC` for this [SimpleCalc API](simple-calc-lambda-api.md) avec deux modèles pour décrire l'entrée (`Input`) et la sortie (`Result`) des demandes et réponses de l'API, dans le SDK, la classe client d'API résultante devient `SIMPLE_CALCSimpleCalcClient` et, respectivement, les classes de données correspondantes sont `SIMPLE_CALCInput` et`SIMPLE_CALCResult`. Les demandes et réponses d'API sont mappées aux méthodes de kit SDK comme suit : 
+ La demande d'API

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

  devient la méthode du kit SDK

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

  La propriété `AWSTask.result` est de type `SIMPLE_CALCResult` si le modèle `Result` a été ajouté à la réponse de méthode. Sinon, elle est de type `NSDictionary`.
+ Cette demande d'API

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

  devient la méthode du kit SDK

  ```
  public func rootPost(body: SIMPLE_CALCInput) -> AWSTask
  ```
+ La demande d'API

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

  devient la méthode du kit SDK

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

La procédure suivante décrit comment appeler les méthodes d’API dans le code source de l’application Swift, par exemple, comme faisant partie du délégué `viewDidLoad()` dans un fichier `ViewController.m`.

**Pour appeler l'API via le kit SDK iOS généré par API Gateway**

1. Instanciez la classe de client d'API :

   ```
   let client = SIMPLE_CALCSimpleCalcClient.default()
   ```

   Pour utiliser Amazon Cognito avec l'API, définissez une configuration de AWS service par défaut (illustrée ci-dessous) avant d'obtenir la `default` méthode (illustrée précédemment) :

   ```
   let credentialsProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.USEast1, identityPoolId: "my_pool_id")        
   let configuration = AWSServiceConfiguration(region: AWSRegionType.USEast1, credentialsProvider: credentialsProvider)        
   AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
   ```

1. Appelez la méthode `GET /?a=1&b=2&op=+` pour exécuter `1+2` :

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

   où `self.showResult(task)` de la fonction d’assistant imprime le résultat ou l’erreur vers la console ; par exemple : 

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

   Dans une application de production, vous pouvez afficher le résultat ou l’erreur dans un champ de texte. Le résultat qui s'affiche est `1 + 2 = 3`.

1. Appelez la méthode `POST /` avec une charge utile pour exécuter `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
   }
   ```

   Le résultat qui s’affiche est `1 - 2 = -1`.

1. Appelez la méthode `GET /{a}/{b}/{op}` pour exécuter `1/2` :

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

   Le résultat qui s'affiche est `1 div 2 = 0.5`. Ici, `div` est utilisé à la place de `/`, car la [fonction Lambda simple](simple-calc-nodejs-lambda-function.md) du backend ne gère pas les variables de chemin d'URL codée.