Utilisation d'un kit SDK iOS généré (Objective-C) pour appeler une API - Amazon API Gateway

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é (Objective-C) pour appeler une API

Avant de commencer la procédure suivante, vous devez suivre la procédure décrite dans Génération des kits SDK pour une API à l'aide de la console API Gateway pour iOS dans Objective-C et télécharger le fichier .zip du kit SDK généré.

Installation du Kit SDK AWS Mobile et d’un SDK iOS généré par API Gateway dans un projet Objective-C

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é. A l'aide de l'API SimpleCalc, vous pouvez renommer le dossier du kit SDK décompressé sous la forme sdk_objc_simple_calc. 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 tire parti de CocoaPods pour importer les bibliothèques API Gateway requises et d'autres composants du Kit SDK AWS Mobile dépendants. Vous devez mettre à jour le fichier Podfile pour importer les kits SDK 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.

  2. 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.

  3. Pour importer le AWS Mobile 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
    2. 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'
    3. Ouvrez une fenêtre de terminal et exécutez la commande suivante :

      pod install

      Cette opération installe le composant API Gateway et d'autres composants du Kit SDK AWS Mobile dépendants.

    4. Fermez le projet Xcode et ouvrez le fichier .xcworkspace pour relancer Xcode.

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

    Pour importer le AWS Mobile SDK for iOS Objective-C dans votre projet en téléchargeant explicitement le kit SDK AWS Mobile ou en utilisant Carthage, suivez les instructions du fichier README.md. Veillez à utiliser une seule de ces options pour importer le kit 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

Lorsque vous générez le kit SDK avec le préfixe SIMPLE_CALC pour cette API SimpleCalc avec deux modèles pour l'entrée (Input) et la sortie (Result) des méthodes, dans le kit SDK, la classe de client d'API qui en résulte devient SIMPLE_CALCSimpleCalcClient et les classes de données correspondantes sont SIMPLE_CALCInput et SIMPLE_CALCResult, respectivement. 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.

  2. 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;
  3. 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; }];

    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.

  4. 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.

  5. 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 du backend ne gère pas les variables de chemin d'URL codée.