Menggunakan SDK iOS yang dihasilkan oleh API Gateway untuk REST API di Objective-C atau Swift - APIGerbang Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan SDK iOS yang dihasilkan oleh API Gateway untuk REST API di Objective-C atau Swift

Dalam tutorial ini, kami akan menunjukkan cara menggunakan SDK iOS yang dihasilkan oleh API Gateway untuk REST API di aplikasi Objective-C atau Swift untuk memanggil API yang mendasarinya. Kami akan menggunakan SimpleCalc API sebagai contoh untuk mengilustrasikan topik-topik berikut:

  • Cara menginstal komponen AWS Mobile SDK yang diperlukan ke dalam proyek Xcode Anda

  • Cara membuat objek klien API sebelum memanggil metode API

  • Cara memanggil metode API melalui metode SDK yang sesuai pada objek klien API

  • Cara menyiapkan input metode dan mengurai hasilnya menggunakan kelas model SDK yang sesuai

Menggunakan SDK iOS (Objective-C) yang dihasilkan untuk memanggil API

Sebelum memulai prosedur berikut, Anda harus menyelesaikan langkah-langkah Hasilkan SDKs untuk REST APIs di API Gateway untuk iOS di Objective-C dan mengunduh file.zip dari SDK yang dihasilkan.

Instal SDK AWS seluler dan SDK iOS yang dihasilkan oleh API Gateway dalam proyek Objective-C

Prosedur berikut menjelaskan cara menginstal SDK.

Untuk menginstal dan menggunakan SDK iOS yang dihasilkan oleh API Gateway di Objective-C
  1. Ekstrak konten file.zip buatan API Gateway yang Anda unduh sebelumnya. Dengan menggunakan SimpleCalc API, Anda mungkin ingin mengganti nama folder SDK yang tidak di-zip menjadi sesuatu seperti. sdk_objc_simple_calc Di folder SDK ini ada README.md file dan Podfile file. README.mdFile berisi instruksi untuk menginstal dan menggunakan SDK. Tutorial ini memberikan rincian tentang instruksi ini. Penginstalan memanfaatkan CocoaPodsuntuk mengimpor pustaka API Gateway yang diperlukan dan komponen AWS Mobile SDK dependen lainnya. Anda harus memperbarui file Podfile untuk mengimpor SDK ke proyek Xcode aplikasi Anda. Folder SDK yang tidak diarsipkan juga berisi generated-src folder yang berisi kode sumber SDK yang dihasilkan dari API Anda.

  2. Luncurkan Xcode dan buat proyek iOS Objective-C baru. Catat target proyek. Anda harus mengaturnya diPodfile.

    Temukan target di Xcode.
  3. Untuk mengimpor AWS Mobile SDK for iOS ke dalam proyek Xcode dengan menggunakan CocoaPods, lakukan hal berikut:

    1. Instal CocoaPods dengan menjalankan perintah berikut di jendela terminal:

      sudo gem install cocoapods pod setup
    2. Salin Podfile file dari folder SDK yang diekstrak ke direktori yang sama yang berisi file proyek Xcode Anda. Ganti blok berikut:

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

      dengan nama target proyek Anda:

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

      Jika proyek Xcode Anda sudah berisi file bernamaPodfile, tambahkan baris kode berikut ke dalamnya:

      pod 'AWSAPIGateway', '~> 2.4.7'
    3. Buka jendela terminal dan jalankan perintah berikut:

      pod install

      Ini menginstal komponen API Gateway dan komponen AWS Mobile SDK dependen lainnya.

    4. Tutup proyek Xcode dan kemudian buka .xcworkspace file untuk meluncurkan kembali Xcode.

    5. Tambahkan semua .m file .h dan file dari generated-src direktori SDK yang diekstrak ke dalam proyek Xcode Anda.

      .h dan.m file ada di src yang dihasilkan

    Untuk mengimpor AWS Mobile SDK for iOS Objective-C ke project Anda dengan mengunduh AWS Mobile SDK secara eksplisit atau menggunakan Carthage, ikuti petunjuk dalam file README.md. Pastikan untuk hanya menggunakan salah satu opsi ini untuk mengimpor SDK AWS Seluler.

Memanggil metode API menggunakan SDK iOS yang dihasilkan oleh API Gateway dalam proyek Objective-C

Saat Anda membuat SDK dengan awalan SIMPLE_CALC untuk SimpleCalc API ini dengan dua model untuk input (Input) dan output (Result) metode, di SDK, kelas klien API yang dihasilkan menjadi SIMPLE_CALCSimpleCalcClient dan kelas data yang sesuai adalah SIMPLE_CALCInput danSIMPLE_CALCResult, masing-masing. Permintaan dan respons API dipetakan ke metode SDK sebagai berikut:

  • Permintaan API dari

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

    menjadi metode SDK dari

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

    AWSTask.resultProperti adalah SIMPLE_CALCResult tipe jika Result model ditambahkan ke respons metode. Jika tidak, properti adalah NSDictionary tipe.

  • Permintaan API ini dari

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

    menjadi metode SDK dari

    (AWSTask *)rootPost:(SIMPLE_CALCInput *)body
  • Permintaan API dari

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

    menjadi metode SDK dari

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

Prosedur berikut menjelaskan cara memanggil metode API dalam kode sumber aplikasi Objective-C; misalnya, sebagai bagian dari viewDidLoad delegasi dalam file. ViewController.m

Untuk memanggil API melalui SDK iOS yang dihasilkan oleh API Gateway
  1. Impor file header kelas klien API untuk membuat kelas klien API dapat dipanggil di aplikasi:

    #import "SIMPLE_CALCSimpleCalc.h"

    #importPernyataan itu juga mengimpor SIMPLE_CALCInput.h dan SIMPLE_CALCResult.h untuk dua kelas model.

  2. Buat instance class klien API:

    SIMPLE_CALCSimpleCalcClient *apiInstance = [SIMPLE_CALCSimpleCalcClient defaultClient];

    Untuk menggunakan Amazon Cognito dengan API, setel defaultServiceConfiguration properti pada AWSServiceManager objek default, seperti yang ditunjukkan di bawah ini, sebelum memanggil defaultClient metode untuk membuat objek klien API (ditunjukkan pada contoh sebelumnya):

    AWSCognitoCredentialsProvider *creds = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:your_cognito_pool_id]; AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:creds]; AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
  3. Panggil GET /?a=1&b=2&op=+ metode untuk melakukan1+2:

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

    di mana fungsi pembantu handleApiResponse:task memformat hasilnya sebagai string yang akan ditampilkan dalam bidang teks (_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; }

    Tampilan yang dihasilkan adalah1 + 2 = 3.

  4. Panggil POST / dengan muatan untuk melakukan1-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; }];

    Tampilan yang dihasilkan adalah1 - 2 = -1.

  5. Panggil GET /{a}/{b}/{op} untuk melakukan1/2:

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

    Tampilan yang dihasilkan adalah1 div 2 = 0.5. Di sini, div digunakan sebagai pengganti / karena fungsi Lambda sederhana di backend tidak menangani variabel jalur yang dikodekan URL.

Menggunakan SDK iOS (Swift) yang dihasilkan untuk memanggil API

Sebelum memulai prosedur berikut, Anda harus menyelesaikan langkah-langkah Hasilkan SDKs untuk REST APIs di API Gateway untuk iOS di Swift dan mengunduh file.zip dari SDK yang dihasilkan.

Instal SDK AWS seluler dan SDK yang dihasilkan API Gateway dalam proyek Swift

Prosedur berikut menjelaskan cara menginstal SDK.

Untuk menginstal dan menggunakan SDK iOS yang dihasilkan oleh API Gateway di Swift
  1. Ekstrak konten file.zip buatan API Gateway yang Anda unduh sebelumnya. Dengan menggunakan SimpleCalc API, Anda mungkin ingin mengganti nama folder SDK yang tidak di-zip menjadi sesuatu seperti. sdk_swift_simple_calc Di folder SDK ini ada README.md file dan Podfile file. README.mdFile berisi instruksi untuk menginstal dan menggunakan SDK. Tutorial ini memberikan rincian tentang instruksi ini. Penginstalan memanfaatkan CocoaPodsuntuk mengimpor komponen AWS Mobile SDK yang diperlukan. Anda harus memperbarui Podfile untuk mengimpor SDK ke proyek Xcode aplikasi Swift Anda. Folder SDK yang tidak diarsipkan juga berisi generated-src folder yang berisi kode sumber SDK yang dihasilkan dari API Anda.

  2. Luncurkan Xcode dan buat proyek iOS Swift baru. Catat target proyek. Anda harus mengaturnya diPodfile.

    Temukan target di Xcode.
  3. Untuk mengimpor komponen AWS Mobile SDK yang diperlukan ke dalam proyek Xcode dengan menggunakan CocoaPods, lakukan hal berikut:

    1. Jika tidak diinstal, instal CocoaPods dengan menjalankan perintah berikut di jendela terminal:

      sudo gem install cocoapods pod setup
    2. Salin Podfile file dari folder SDK yang diekstrak ke direktori yang sama yang berisi file proyek Xcode Anda. Ganti blok berikut:

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

      dengan nama target proyek Anda seperti yang ditunjukkan:

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

      Jika proyek Xcode Anda sudah berisi a Podfile dengan target yang benar, Anda cukup menambahkan baris kode berikut ke do ... end loop:

      pod 'AWSAPIGateway', '~> 2.4.7'
    3. Buka jendela terminal dan jalankan perintah berikut di direktori aplikasi:

      pod install

      Ini menginstal komponen API Gateway dan komponen AWS Mobile SDK dependen apa pun ke dalam proyek aplikasi.

    4. Tutup proyek Xcode dan kemudian buka *.xcworkspace file untuk meluncurkan kembali Xcode.

    5. Tambahkan semua file header SDK (.h) dan file kode sumber Swift (.swift) dari generated-src direktori yang diekstrak ke proyek Xcode Anda.

      .h dan.swift ada di src yang dihasilkan
    6. Untuk mengaktifkan pemanggilan pustaka Objective-C dari AWS Mobile SDK dari proyek kode Swift Anda, setel path Bridging_Header.h file pada properti Objective-C Bridging Header di bawah Swift Compiler - Pengaturan umum konfigurasi proyek Xcode Anda:

      Atur jalur file Bridging_Header.h di bawah Swift Compiler - General.
      Tip

      Anda dapat mengetik bridging di kotak pencarian Xcode untuk menemukan properti Objective-C Bridging Header.

    7. Bangun proyek Xcode untuk memverifikasi bahwa itu dikonfigurasi dengan benar sebelum melanjutkan lebih jauh. Jika Xcode Anda menggunakan versi Swift yang lebih baru daripada yang didukung untuk AWS Mobile SDK, Anda akan mendapatkan kesalahan kompiler Swift. Dalam hal ini, setel properti Use Legacy Swift Language Version ke Ya di bawah pengaturan Swift Compiler - Version:

      Setel properti Legacy Swift Language Version ke Ya.

    Untuk mengimpor SDK AWS Seluler untuk iOS di Swift ke proyek Anda dengan mengunduh AWS SDK Seluler secara eksplisit atau menggunakan Carthage, ikuti petunjuk dalam README.md file yang disertakan dengan paket SDK. Pastikan untuk hanya menggunakan salah satu opsi ini untuk mengimpor SDK AWS Seluler.

Memanggil metode API melalui SDK iOS yang dihasilkan oleh API Gateway dalam proyek Swift

Saat Anda membuat SDK dengan awalan untuk SimpleCalc API ini dengan dua model SIMPLE_CALC untuk mendeskripsikan input (Input) dan output (Result) permintaan dan respons API, di SDK, kelas klien API yang dihasilkan menjadi SIMPLE_CALCSimpleCalcClient dan kelas data yang sesuai adalah SIMPLE_CALCInput danSIMPLE_CALCResult, masing-masing. Permintaan dan respons API dipetakan ke metode SDK sebagai berikut:

  • Permintaan API dari

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

    menjadi metode SDK dari

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

    AWSTask.resultProperti adalah SIMPLE_CALCResult tipe jika Result model ditambahkan ke respons metode. Kalau tidak, itu adalah NSDictionary tipe.

  • Permintaan API ini dari

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

    menjadi metode SDK dari

    public func rootPost(body: SIMPLE_CALCInput) -> AWSTask
  • Permintaan API dari

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

    menjadi metode SDK dari

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

Prosedur berikut menjelaskan cara memanggil metode API dalam kode sumber aplikasi Swift; misalnya, sebagai bagian dari viewDidLoad() delegasi dalam file. ViewController.m

Untuk memanggil API melalui SDK iOS yang dihasilkan oleh API Gateway
  1. Buat instance class klien API:

    let client = SIMPLE_CALCSimpleCalcClient.default()

    Untuk menggunakan Amazon Cognito dengan API, tetapkan konfigurasi AWS layanan default (ditampilkan berikut) sebelum mendapatkan default metode (ditampilkan sebelumnya):

    let credentialsProvider = AWSCognitoCredentialsProvider(regionType: AWSRegionType.USEast1, identityPoolId: "my_pool_id") let configuration = AWSServiceConfiguration(region: AWSRegionType.USEast1, credentialsProvider: credentialsProvider) AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
  2. Panggil GET /?a=1&b=2&op=+ metode untuk melakukan1+2:

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

    di mana fungsi pembantu self.showResult(task) mencetak hasil atau kesalahan ke konsol; misalnya:

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

    Di aplikasi produksi, Anda dapat menampilkan hasil atau kesalahan di bidang teks. Tampilan yang dihasilkan adalah1 + 2 = 3.

  3. Panggil POST / dengan muatan untuk melakukan1-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 }

    Tampilan yang dihasilkan adalah1 - 2 = -1.

  4. Panggil GET /{a}/{b}/{op} untuk melakukan1/2:

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

    Tampilan yang dihasilkan adalah1 div 2 = 0.5. Di sini, div digunakan sebagai pengganti / karena fungsi Lambda sederhana di backend tidak menangani variabel jalur yang dikodekan URL.