2017-06-18 60 views
0

我試圖讓我的API-網關地圖應用程序/ X WWW的形式,進行了urlencoded使用此解決方案,以JSON參數傳遞給AWS LAMBDA: How to pass a params from POST to AWS Lambda from Amazon API Gateway如何從POST從亞馬遜API網關

但到目前爲止,我的lambda成功觸發了我的request.body始終爲空。如果有人知道如何處理.net-core c#我真的很感謝洞察力。

這是我的無服務器lambda表達式是什麼樣子到目前爲止,我收到關於request.body時間戳,但沒有

public async Task<APIGatewayProxyResponse> Post(APIGatewayProxyRequest request, ILambdaContext context) 
    { 
     var webHook = new WebHookClient("https://{urlHiddenForObviousReasons}"); 
     var body = new BodyModel 
     { 
      Content = $"Trigger @ {DateTime.UtcNow}, {request.Body}" 
     }; 
     await webHook.PostMessage(body); 
     var response = new APIGatewayProxyResponse 
     { 
      StatusCode = (int)HttpStatusCode.OK, 
      Body = "Alert received.", 
      Headers = new Dictionary<string, string> { { "Content-Type", "text/plain" } } 
     }; 

     return response; 
    } 

請注意,如果我使用代理服務器集成,而不是形式的值傳遞,我想使用映射,所以我可以有兩個客戶端使用不同的post方法相同的API,並讓lambda只解析json。以這種方式結束傳遞表單值的設置示例:key = 1 & steamid = 1 & notetitle = ARK-ALARM%3A + 06%2F17 +%40 + 16%3A24 + on +舊石器+方舟+ + + +島%2C + ALARM + '基地' + IN + '的+隱+湖' +是+跳閘! &消息= ...

enter image description here

+1

您是否嘗試過使用CW日誌來調試API GW映射/處理?如果您在API GW控制檯中使用「測試」功能,則可以看到具有完整日誌記錄輸出的dryrun請求,以便您可以看到實際的原始請求正在對Lambda執行,並且還會在執行映射模板之前/之後看到請求主體。 –

回答

0

您需要添加一個Mapping Template。 例如:

{ 
    "name" : "$input.params('name')", 
    "body" : $input.json('$') 
} 

在POST方法的合併請求部分添加此。 AWS API Gateway Integration Request

一個很好的例子是here

爲我的作品的另一種更爲複雜的例子:

#set($allParams = $input.params()) 
{ 
"body-json" : $input.json('$'), 
"params" : { 
#foreach($type in $allParams.keySet()) 
    #set($params = $allParams.get($type)) 
"$type" : { 
    #foreach($paramName in $params.keySet()) 
    "$paramName" : "$util.escapeJavaScript($params.get($paramName))" 
     #if($foreach.hasNext),#end 
    #end 
} 
    #if($foreach.hasNext),#end 
#end 
} 
} 

,因爲我已經習慣了的JavaScript和Python,我不能對C#代碼發表評論,但它似乎罰款

+0

以及鏈接的例子是動態地做這個映射,但我會給你一個靜態的例子。看看它是否有效。 – Lorien

+0

對不起,我花了一段時間接受你的答案。這就是我最終做的事,忘了回到這裏。 – Lorien

+0

嘿,別擔心,我感謝你回來:) – cameck