2016-08-24 5 views
1

AWSから生成されたAPIを使用しようとするとネイティブのパート(Objective C)からReact Nativeにデータを戻す際にいくつか問題がありますAPIゲートウェイ。AWSからApi Gatewayを使用してReactネイティブとコールバックを持つiOS(Objective C)SDKを生成

私はawsで簡単なテストゲートウェイをセットアップし、そのリソースのモデルも作成しました。このように見えます。私は客観C.

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "dummyConfigModel", 
    "type": "object", 
    "properties": { 
    "config": { 
     "type": "array", 
     "items": { 
     "type": "object", 
     "properties": { 
      "type": { 
      "type": "string" 
      }, 
      "value": { 
      "type": "string" 
      }, 
      "placeholder": { 
      "type": "string" 
      }, 
      "label": { 
      "type": "string" 
      }, 
      "meta": { 
      "type": "object", 
      "properties": { 
       "height": { 
       "type": "integer" 
       }, 
       "width": { 
       "type": "integer" 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

にAWSからの応答を読み取ることができませんでしたモデルがなければ[OK]を、代わりにそれとので、私は、AWSからAPIを生成し、それは私のワークスペース内に設置しまいました。 http://facebook.github.io/react-native/docs/native-modules-ios.htmlのドキュメントを読んで、ネイティブモジュール(コールバック付き)を呼び出しました。

const NFAWSManager = NativeModules.NFAWSManager; 
    const config = NFAWSManager.call(
     'configGet', { 
     'dummyKey': 'dummyValue' 
     }, 
     this.callback); 

私はそうAPIへのすべての変更のための新しいネイティブメソッドを設定避けるために、文字列でAWSメソッドを呼び出すことを計画していますが、今の呼び出し方法は、ちょうど「configGet」を行います。

ネイティブ部分は次のようになります。

#import "NFAWSManager.h" 
#import "NFReactTestAPIClient.h" 

@implementation NFAWSManager 

RCT_EXPORT_MODULE(); 

RCT_EXPORT_METHOD(
    call:(NSString *)method 
    params:(NSDictionary *)params 
    callback:(RCTResponseSenderBlock)callback 
) 
{ 
    NSLog(@"Method was: %@", method); 
    NSLog(@"Params was: %@", params); 

    NFReactTestAPIClient *client = [NFReactTestAPIClient defaultClient]; 
    [[client configGet:nil] continueWithBlock:^id(AWSTask *task) { 
    if (task.error) { 
     NSLog(@"Error: %@", task.error); 
     callback(@[task.error]); 
    } 
    else { 
     NFDummyConfigModel *output = task.result; 

     NSLog(@"DEBUG %@", output); 

     callback(@[[NSNull null], output]); 
    } 

    return nil; 
    }]; 
} 
@end 

[OK]を、ので、私は基本的に何を取得リアクトからこれを呼び出すとき。私は "{}"を得る。しかし、もし私が文字列や辞書のようなものをハードコードするなら、それはReactによって通常受け取られます。

私が助けが必要なのは、task.resultオブジェクトをReactに渡すことができる形式に変換することです。私はそれがモデルかもしれないと思う?

+0

API Gatewayのレスポンスセクションでモデルを完全に削除したように見えますが、結果を反応させるために渡すことができます。しかし、これを削除することで、JavaバージョンのAPIが問題になると思われます。 *私は掘り続けるだろう* – fmortens

答えて

0

AWSのデフォルトモデルがEmptyモデルであり、その結果データが生成されたNFEmptyのインスタンスになっていたという問題が実際に発生しました。適切なモデルを作成することによって、これは解決されました。

モデルを削除することは、iOSで機能しましたが、データを取得するためにのみ使用できました。モデルを投稿したい場合は、絶対に必要です。

関連する問題