2015-11-29 17 views
7

我試圖通過API Gateway從multipart/form-dataPOST獲取表單數據到我的ASW Lambda Web服務。使用AWS API Gateway和Lambda從多部分/表單數據獲取非文件正文

HTTP POST具有Content-Type「multipart/form-data」和URL編碼的正文。文件數據也發送到這篇文章中(因此我猜想是多部分)。

Web服務需要與第三方服務集成,因此更改POST的格式並不是真正的選擇。

我已經看到這個thread談論將URL編碼數據轉換爲JSON對象以供在Lambda中使用,但這並不能解決問題。

我自己也嘗試設置合併請求 - 內容類型multipart/form-data>映射模板輸入直通。這也沒有幫助。

我確實碰到過有關使用multipart/form-data上傳文件的另一question,但由於我對該文件不感興趣,只是身體,該答案沒有幫助。

下面找到通過runscope捕獲的文章截圖(對不起)。

Post details

+0

你能告訴後身體的例子嗎? – Ryan

+0

@Ryan更新了帖子的截圖。 – Diederik

回答

4

如果目標是用LAMBDA,你需要有效的JSON傳遞給函數。目前,Api Gateway中的JSON-ify數據沒有辦法作爲非JSON數據來使用。

我們的短期修復(在我們的積壓)是在映射模板中提供一個變量來獲取請求的原始輸入。這樣,你可以做一個簡單的JSON轉換使用如下模板:

{ 
    "body" : "$input.body" 
} 

或類似的東西。

退房獲取更多信息映射模板參考:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html

編輯4/7 - 功能已被釋放$ input.body

+0

感謝您的回答。我懷疑這是一個僅限JSON的服務。 (考慮到大多數Web API的發展方向,這不是太不合理。) 我通過在其間插入另一個服務來解決這個限制,即進行翻譯。 – Diederik

+0

Hi @Jack是否有這個'$ input.raw'變量可用呢? – Tiago

+0

尚未完成,我們仍在努力解決積壓的其他項目。不幸的是,目前沒有ETA。我很抱歉! –

相關問題