2017-10-10 47 views
0

documentation指出json應返回包含所有我擁有的主體,標題和狀態代碼。但是,無論什麼原因,當我在API網關中測試它時,它會返回格式錯誤的響應。AWS API網關格式錯誤的Lambda響應

這是下面方法的輸出。

「{\」 身體\ 「:200,\」 報頭\ 「:{\」 內容類型\ 「: \」 應用程序/ JSON \ 「},\」 的StatusCode \ 「:200}」

def addnumbers(message, context): 

    result = message['num1'] + 1 
    print(result) 
    resp = { 
     "statusCode": 200, 
     "body": result, 
     "headers": { "Content-type": "application/json"} 
    } 
    return (json.dumps(resp)) 

我目前傳遞NUM1 = 1,並沒有給出任何更好的錯誤消息。任何指導將不勝感激。

+1

當您嘗試直接返回響應對象會發生什麼,而不是使用'json.dumps'將其轉換爲字符串?只需'返回resp'? –

+0

仍然是同樣的問題,它可能是其他影響它的代碼嗎? –

+0

您確定它正在返回該響應並且不會拋出錯誤嗎?您是否在CloudWatch中檢查函數的日誌? –

回答

0

好吧扣上一個答案。

請確保您已啓用代理集成,以便在您的API中使用任何資源。

現在去你的lambda。看看我以前試圖通過num1.I是試圖從「事件」或消息得到它。這是我絆倒的地方。另外請注意(you can't do a get with a body) 相反,lambda的輸入應該是這樣的。

{ 「queryStringParameters」:{ 「輸入」: 「無論輸入你想要的拉姆達測試」 } }所以,現在我們已經配置了我們的測試

lambda我們需要編碼lambda本身。

我把這段代碼中:

高清lambda_handler(事件上下文):

number = "Hello, " + event['queryStringParameters']['input'] 
out = {} 
out['statusCode'] = 200 
out['body'] = number 

return (out) 

現在,如果你測試它應該罰款。

回到API網關 在投入輸入「查詢字符串」節= randomname

現在應該有個招呼回來,randomname

相關問題