2017-03-15 18 views
0

ラムダ関数を作成し、APIゲートウェイトリガを追加しました。トリガを追加すると、 "ラムダプロキシ"と "プロキシリソース"としてAPIが作成されました。これは、documentationのプロキシリソースが "ラムダ関数の出力をHTTP応答に変換する"ために有効です。しかし、それは200を返しますが、私のajaxリクエストのエラー関数を呼び出します。エラーをデバッグすると、parsererrorNo conversion from text to application/jsonが表示されます。 API Gatewayに欠けているものがありますか?私はapplication/json => Emptyを「メソッド応答」に追加しようとしましたが、何もしません。AWS API Gateway&Lambda - テキストからアプリケーション/ jsonへの変換なし

は、ここに私のラムダ関数が返すものです:

return { 
    "statusCode": 200, 
    "headers": { 
     "Access-Control-Allow-Origin": "*", 
     "Content-Type": "application/json" 
    }, 
    "body": "Email added to system." 
} 

をここにAJAXです:

var formData = $("#submitEmail").serializeArray(); 
    console.log(formData); 

    $.ajax({ 
     url : "https://<REDACTED>.execute-api.us-east-1.amazonaws.com/prod/SubmitEmail", 
     type: "POST", 
     data : formData, 
     dataType: "application/json", 
     success: function(data, textStatus, xhr) 
     { 
      console.log("SUCCESS") 
      console.log(xhr.status) 
     }, 
     error: function (xhr, textStatus, errorThrown) 
     { 
      console.log("ERROR") 
      console.log(xhr.status) 
      console.log(textStatus) 
      console.log(errorThrown) 
     } 
    }); 
+0

それを解決するかどうかは分かりませんが、本文を "" body ":" msg: "システムに追加されたメール"に設定しようとすることはできますか? } '?コンテンツタイプが 'application/json'の場合、文字列ではなくオブジェクトを送信するほうが意味があります。 –

+0

ええ、 'JSON.parse("システムに追加された電子メール ")はエラーをスローします。実際に有効なJSONを提供する必要があります。 – idbehold

+0

ええと、それは機能を壊して、私に502を与えます。[this]の最下部を見ると(https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-setup -simple-proxy.html#api-gateway-simple-proxy-lambda-output-format)、 'body'は文字列を要求します。 – sambol

答えて

0

私はこれを説明するかどうかは非常にわからないんだけど、私はそれを呼び出すために取得することができました私のAJAXリクエストの成功関数。私はそれがデータ型の不一致だと思う。ここに私が変えたものがあります。私は "200の応答ヘッダ" と "200の応答ボディ" の下にリストされている何もない、APIゲートウェイの場合

return { 
    "statusCode": 200, 
    "headers": { 
     "Access-Control-Allow-Origin": "*" 
    }, 
    "body": json.dumps({ 
     "msg": "Email added to system." 
    }) 
} 

var formData = { 
    email: $("#email").val() 
    } 

    dataType: "json" (instead of "application/json") 

ラムダ関数:

は私のAJAXリクエストを修正しました。

関連する問題