ラムダ関数を作成し、APIゲートウェイトリガを追加しました。トリガを追加すると、 "ラムダプロキシ"と "プロキシリソース"としてAPIが作成されました。これは、documentationのプロキシリソースが "ラムダ関数の出力をHTTP応答に変換する"ために有効です。しかし、それは200
を返しますが、私のajaxリクエストのエラー関数を呼び出します。エラーをデバッグすると、parsererror
とNo 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)
}
});
それを解決するかどうかは分かりませんが、本文を "" body ":" msg: "システムに追加されたメール"に設定しようとすることはできますか? } '?コンテンツタイプが 'application/json'の場合、文字列ではなくオブジェクトを送信するほうが意味があります。 –
ええ、 'JSON.parse("システムに追加された電子メール ")はエラーをスローします。実際に有効なJSONを提供する必要があります。 – idbehold
ええと、それは機能を壊して、私に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