

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Von API Gateway generiertes iOS-SDK für eine REST-API in Objective-C oder Swift verwenden
<a name="how-to-generate-sdk-ios"></a>

In diesem Tutorial erfahren Sie, wie Sie ein iOS SDK, das von API Gateway für eine REST-API in einer Objective-C- oder Swift-App generiert wurde, zum Aufrufen der zugrunde liegenden API verwenden. Wir werden die [SimpleCalc API](simple-calc-lambda-api.md) als Beispiel verwenden, um die folgenden Themen zu veranschaulichen:
+ So installieren Sie die erforderlichen AWS Mobile SDK-Komponenten in Ihrem Xcode-Projekt
+ So erstellen Sie das API-Clientobjekt vor dem Aufruf der API-Methoden
+ So rufen Sie die API-Methoden mit den entsprechenden SDK-Methoden auf dem API-Clientobjekt auf
+ So generieren Sie die Methodeneingabe und analysieren das Ergebnis mit den entsprechenden SDK-Modellklassen

**Topics**
+ [Verwenden des generierten iOS-SDK (Objective-C) zum Aufrufen der API](#how-to-use-sdk-ios-objc)
+ [Verwenden eines generierten iOS-SDK (Swift) zum Aufrufen der API](#how-to-generate-sdk-ios-swift)

## Verwenden des generierten iOS-SDK (Objective-C) zum Aufrufen der API
<a name="how-to-use-sdk-ios-objc"></a>

Bevor Sie mit folgendem Verfahren beginnen, müssen Sie die Schritte in [Generieren Sie SDKs für REST APIs in API Gateway](how-to-generate-sdk.md) für iOS in Objective-C durchführen und die ZIP-Datei des generierten SDK herunterladen.

### Installieren Sie das AWS mobile SDK und ein von API Gateway generiertes iOS-SDK in einem Objective-C-Projekt
<a name="use-sdk-ios-objc-install-sdk"></a>

Im folgenden Verfahren wird beschrieben, wie Sie das SDK installieren.

**So installieren und verwenden Sie ein iOS-SDK, das von API Gateway generiert wurde, in Objective-C:**

1. Extrahieren Sie den Inhalt der von API Gateway generierten ZIP-Datei, die Sie zuvor heruntergeladen haben. Wenn Sie die [SimpleCalc API](simple-calc-lambda-api.md) verwenden, möchten Sie den entpackten SDK-Ordner möglicherweise in etwas wie umbenennen. **sdk\$1objc\$1simple\$1calc** In diesem SDK-Ordner sind eine `README.md`-Datei und eine `Podfile`-Datei enthalten. Die `README.md`-Datei enthält die Anweisungen für die Installation und Verwendung des SDK. Dieses Tutorial bietet Details zu diesen Anweisungen. Die Installation nutzt [CocoaPods](https://cocoapods.org)den Import der erforderlichen API Gateway Gateway-Bibliotheken und anderer abhängiger AWS Mobile SDK-Komponenten. Sie müssen das aktualisieren`Podfile`, um es SDKs in das Xcode-Projekt Ihrer App zu importieren. Der nicht archivierte SDK-Ordner enthält auch einen `generated-src`-Ordner mit dem Quellcode des generierten SDK Ihrer API.

1. Starten Sie Xcode und erstellen Sie ein neues iOS Objective-C-Projekt. Notieren Sie das Projektziel. Sie müssen die entsprechende Einstellung in der `Podfile` vornehmen.

      
![\[Das Ziel in Xcode finden.\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/use-sdk-in-ios-objc-project-find-target.png)

1. Gehen Sie wie folgt vor, um das mithilfe CocoaPods von AWS Mobile SDK for iOS in das Xcode-Projekt zu importieren:

   1. Führen Sie zur Installation CocoaPods den folgenden Befehl in einem Terminalfenster aus:

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

   1. Kopieren Sie die `Podfile`-Datei vom extrahierten SDK-Ordner in dasselbe Verzeichnis, das Ihre Xcode Projektdatei enthält. Ersetzen Sie den folgenden Block:

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

      mit dem Zielnamen Ihres Projekts: 

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

      Wenn Ihr Xcode-Projekt bereits eine Datei mit dem Namen `Podfile` enthält, fügen Sie die folgende Codezeile hinzu:

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

   1. Öffnen Sie ein Terminalfenster und führen Sie den folgenden Befehl aus:

      ```
      pod install
      ```

      Dadurch werden die API Gateway Gateway-Komponente und andere abhängige AWS Mobile SDK-Komponenten installiert.

   1. Schließen Sie das Xcode-Projekt und öffnen Sie anschließend die `.xcworkspace`-Datei, um Xcode neu zu starten.

   1. Fügen Sie alle `.h`- und `.m`-Dateien aus dem extrahierten SDK-Verzeichnis `generated-src` Ihrem Xcode-Projekt hinzu.

         
![\[.h- und m-Dateien befinden sich in der generated-src\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/use-sdk-in-ios-objc-project-add-sdk-src.png)

   *Um AWS Mobile SDK for iOS Objective-C in Ihr Projekt zu importieren, indem Sie das AWS Mobile SDK explizit herunterladen oder [Carthage](https://github.com/Carthage/Carthage#installing-carthage) verwenden, folgen Sie den Anweisungen in der Datei README.md.* Achten Sie darauf, nur eine dieser Optionen zu verwenden, um das Mobile SDK zu importieren. AWS 

### In einem Objective-C-Projekt API-Methoden unter Verwendung des von API Gateway generierten iOS-SDKs aufrufen
<a name="use-sdk-ios-objc-call-sdk"></a>

Wenn Sie das SDK mit dem Präfix `SIMPLE_CALC` für diese [SimpleCalc API](simple-calc-lambda-api.md) mit zwei Modellen für Eingabe (`Input`) und Ausgabe (`Result`) der Methoden generiert haben, wird im SDK die resultierende API-Clientklasse `SIMPLE_CALCSimpleCalcClient` und die entsprechenden Datenklassen sind jeweils `SIMPLE_CALCInput` und`SIMPLE_CALCResult`. Die API-Anfragen und-Antworten sind den SDK-Methoden wie folgt zugeordnet:
+ Die API-Anfrage

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

  wird die SDK-Methode

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

  Die Eigenschaft `AWSTask.result` ist vom Typ `SIMPLE_CALCResult`, wenn das Modell `Result` zur Methodenantwort hinzugefügt wurde. Andernfalls ist die Eigenschaft vom Typ `NSDictionary`.
+ Diese API-Anfrage

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

  wird die SDK-Methode

  ```
  (AWSTask *)rootPost:(SIMPLE_CALCInput *)body
  ```
+ Die API-Anfrage

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

  wird die SDK-Methode

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

Im folgenden Verfahren wird beschrieben, wie die API-Methoden im Objective-C-App-Quellcode aufgerufen werden, z. B. als Teil des `viewDidLoad`-Delegaten in einer `ViewController.m`-Datei.

**So rufen Sie die API über das von API Gateway generierte iOS-SDK auf:**

1. Importieren Sie die Header-Datei der API-Client-Klasse, um die API-Client-Klasse in der App aufrufbar zu machen:

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

   Durch die Anweisung `#import` werden auch `SIMPLE_CALCInput.h` und `SIMPLE_CALCResult.h` für die beiden Modellklassen importiert.

1. Instanziieren Sie die API-Client-Klasse:

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

   Um Amazon Cognito mit der API zu verwenden, legen Sie, wie im Folgenden gezeigt, Sie die `defaultServiceConfiguration`-Eigenschaft auf das Standard-`AWSServiceManager`-Objekt fest, bevor Sie die `defaultClient`-Methode aufrufen, um das API-Client-Objekt zu erstellen (im vorhergehenden Beispiel gezeigt):

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

1. Rufen Sie die `GET /?a=1&b=2&op=+`-Methode auf, um `1+2` durchzuführen:

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

   in der die Hilfsfunktion `handleApiResponse:task` das Ergebnis als eine Zeichenfolge formatiert, die in einem Textfeld (`_textField1`) angezeigt werden soll.

   ```
   - (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;
   }
   ```

   Die sich ergebende Anzeige ist `1 + 2 = 3`.

1. Rufen Sie den `POST /` mit einer Nutzlast aus, um `1-2` durchzuführen:

   ```
   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;
       }];
   ```

   Die sich ergebende Anzeige ist `1 - 2 = -1`.

1. Rufen Sie `GET /{a}/{b}/{op}` auf, um `1/2` durchzuführen:

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

   Die sich ergebende Anzeige ist `1 div 2 = 0.5`. Hier wird `div` anstelle von `/` verwendet, da die [einfache Lambda-Funktion](simple-calc-nodejs-lambda-function.md) im Backend keine URL-kodierten Pfadvariablen verarbeitet.

## Verwenden eines generierten iOS-SDK (Swift) zum Aufrufen der API
<a name="how-to-generate-sdk-ios-swift"></a>

Bevor Sie mit folgendem Verfahren beginnen, müssen Sie die Schritte in [Generieren Sie SDKs für REST APIs in API Gateway](how-to-generate-sdk.md) für iOS in Swift durchführen und die ZIP-Datei des generierten SDK herunterladen.

**Topics**
+ [Installieren Sie das AWS mobile SDK und das vom API Gateway generierte SDK in einem Swift-Projekt](#use-sdk-ios-swift-install-sdk)
+ [API-Methoden über das von API Gateway generierte iOS-SDK in einem Swift-Projekt aufrufen](#use-sdk-ios-swift-call-api)

### Installieren Sie das AWS mobile SDK und das vom API Gateway generierte SDK in einem Swift-Projekt
<a name="use-sdk-ios-swift-install-sdk"></a>

Im folgenden Verfahren wird beschrieben, wie Sie das SDK installieren.

**So installieren und verwenden Sie von API Gateway generiertes iOS-SDK in Swift:**

1. Extrahieren Sie den Inhalt der von API Gateway generierten ZIP-Datei, die Sie zuvor heruntergeladen haben. Wenn Sie die [SimpleCalc API](simple-calc-lambda-api.md) verwenden, möchten Sie den entpackten SDK-Ordner möglicherweise in etwas Ähnliches umbenennen. **sdk\$1swift\$1simple\$1calc** In diesem SDK-Ordner sind eine `README.md`-Datei und eine `Podfile`-Datei enthalten. Die `README.md`-Datei enthält die Anweisungen für die Installation und Verwendung des SDK. Dieses Tutorial bietet Details zu diesen Anweisungen. Die Installation nutzt [CocoaPods](https://cocoapods.org)den Import der erforderlichen AWS Mobile SDK-Komponenten. Sie müssen das aktualisieren`Podfile`, um es SDKs in das Xcode-Projekt Ihrer Swift-App zu importieren. Der nicht archivierte SDK-Ordner enthält auch einen `generated-src`-Ordner mit dem Quellcode des generierten SDK Ihrer API.

1. Starten Sie Xcode und erstellen Sie ein neues iOS Swift-Projekt. Notieren Sie das Projektziel. Sie müssen die entsprechende Einstellung in der `Podfile` vornehmen.

      
![\[Das Ziel in Xcode finden.\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/use-sdk-in-ios-swift-project-find-target.png)

1. Gehen Sie wie folgt vor, um die erforderlichen AWS Mobile SDK-Komponenten mithilfe CocoaPods von in das Xcode-Projekt zu importieren:

   1. Wenn es nicht installiert ist, installieren Sie es, CocoaPods indem Sie den folgenden Befehl in einem Terminalfenster ausführen:

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

   1. Kopieren Sie die `Podfile`-Datei vom extrahierten SDK-Ordner in dasselbe Verzeichnis, das Ihre Xcode Projektdatei enthält. Ersetzen Sie den folgenden Block:

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

      mit dem Zielnamen Ihres Projekts wie dargestellt: 

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

      Wenn Ihr Xcode-Projekt bereits eine `Podfile` mit dem korrekten Ziel enthält, können Sie einfach die folgende Codezeile zur `do ... end`-Schleife hinzufügen:

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

   1. Öffnen Sie ein Terminalfenster und führen Sie den folgenden Befehl im App-Verzeichnis aus:

      ```
      pod install
      ```

      Dadurch werden die API Gateway Gateway-Komponente und alle abhängigen AWS Mobile SDK-Komponenten im Projekt der App installiert.

   1. Schließen Sie das Xcode-Projekt und öffnen Sie anschließend die `*.xcworkspace`-Datei, um Xcode neu zu starten.

   1. Fügen Sie alle SDK-Header-Dateien (`.h`) und Swift-Quellcodedateien (`.swift`) aus dem extrahierten `generated-src`-Verzeichnis zu Ihrem Xcode-Projekt hinzu.

         
![\[.h- und .swift-Dateien befinden sich im generated-src\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/use-sdk-in-ios-swift-project-add-sdk-src.png)

   1. Um das Aufrufen der Objective-C-Bibliotheken des AWS Mobile SDK von Ihrem Swift-Code-Projekt aus zu ermöglichen, legen Sie den `Bridging_Header.h` Dateipfad in der Eigenschaft **Objective-C Bridging Header** unter der Einstellung **Swift Compiler — General** Ihrer Xcode-Projektkonfiguration fest: 

         
![\[Legen Sie den Dateipfad „Bridging_Header.h“ unter Swift Compiler - General fest.\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/use-sdk-in-ios-swift-project-set-bridging-header.png)
**Tipp**  
Sie können im Suchfeld von Xcode **bridging** eingeben, um die Eigenschaft **Objective-C Bridging Header** zu suchen.

   1. Erstellen Sie das Xcode-Projekt, um zu überprüfen, dass es ordnungsgemäß konfiguriert wurde, bevor Sie fortfahren. Wenn Ihr Xcode eine neuere Version von Swift verwendet als die, die für das AWS Mobile SDK unterstützt wird, werden Swift-Compilerfehler angezeigt. Setzen Sie in diesem Fall die Eigenschaft **Use Legacy Swift Language Version** auf **Yes** in der Einstellung **Swift Compiler- Version**:

         
![\[Setzen Sie die Eigenschaft „Legacy Swift Language Version“ auf „Ja“.\]](http://docs.aws.amazon.com/de_de/apigateway/latest/developerguide/images/use-sdk-in-ios-swift-project-set-legacy-swift-version.png)

   Um das AWS Mobile SDK for iOS in Swift in Ihr Projekt zu importieren, indem Sie das AWS Mobile SDK explizit herunterladen oder [Carthage](https://github.com/Carthage/Carthage#installing-carthage) verwenden, folgen Sie den Anweisungen in der `README.md` Datei, die dem SDK-Paket beiliegt. Achten Sie darauf, nur eine dieser Optionen zu verwenden, um das AWS Mobile SDK zu importieren.

### API-Methoden über das von API Gateway generierte iOS-SDK in einem Swift-Projekt aufrufen
<a name="use-sdk-ios-swift-call-api"></a>

Wenn Sie das SDK mit dem Präfix `SIMPLE_CALC` für diese [SimpleCalc API](simple-calc-lambda-api.md) mit zwei Modellen zur Beschreibung der Eingabe (`Input`) und Ausgabe (`Result`) der Anfragen und Antworten der API generiert haben, wird im SDK die resultierende API-Clientklasse `SIMPLE_CALCSimpleCalcClient` und die entsprechenden Datenklassen sind jeweils `SIMPLE_CALCInput` und`SIMPLE_CALCResult`. Die API-Anfragen und-Antworten sind den SDK-Methoden wie folgt zugeordnet: 
+ Die API-Anfrage

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

  wird die SDK-Methode

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

  Die Eigenschaft `AWSTask.result` ist vom Typ `SIMPLE_CALCResult`, wenn das Modell `Result` zur Methodenantwort hinzugefügt wurde. Andernfalls ist sie vom Typ `NSDictionary`.
+ Diese API-Anfrage

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

  wird die SDK-Methode

  ```
  public func rootPost(body: SIMPLE_CALCInput) -> AWSTask
  ```
+ Die API-Anfrage

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

  wird die SDK-Methode

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

Im folgenden Verfahren wird beschrieben, wie die API-Methoden im Swift-App-Quellcode aufgerufen werden, z. B. als Teil des `viewDidLoad()`-Delegaten in einer `ViewController.m`-Datei.

**So rufen Sie die API über das von API Gateway generierte iOS-SDK auf:**

1. Instanziieren Sie die API-Client-Klasse:

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

   Um Amazon Cognito mit der API zu verwenden, legen Sie eine AWS Standard-Servicekonfiguration fest (siehe unten), bevor Sie die `default` Methode aufrufen (siehe oben):

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

1. Rufen Sie die `GET /?a=1&b=2&op=+`-Methode auf, um `1+2` durchzuführen:

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

   in der die Hilfsfunktion `self.showResult(task)` das Ergebnis oder den Fehler auf die Konsole druckt, z. B.: 

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

   In einer Produktion-App können Sie das Ergebnis oder den Fehler in einem Textfeld anzeigen. Die sich ergebende Anzeige ist `1 + 2 = 3`.

1. Rufen Sie den `POST /` mit einer Nutzlast aus, um `1-2` durchzuführen:

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

   Die resultierende Anzeige ist `1 - 2 = -1`.

1. Rufen Sie `GET /{a}/{b}/{op}` auf, um `1/2` durchzuführen:

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

   Die sich ergebende Anzeige ist `1 div 2 = 0.5`. Hier wird `div` anstelle von `/` verwendet, da die [einfache Lambda-Funktion](simple-calc-nodejs-lambda-function.md) im Backend keine URL-kodierten Pfadvariablen verarbeitet.