我有一个用Java编写的AWS Lambda函数,它由AWS API网关调用触发。将POST请求正文通过Amazon API Gateway传递到Lambda
我正在尝试使用JSON作为有效负载向其中一个终端发出POST
请求。
curl -H "Content-Type: application/json" -X POST -d '{"firstName":"Mr", "lastName":"Awesome"}' https://someexample.execute-api.eu-central-1.amazonaws.com/beta/MethodHandlerLambda
网关将然后检测的Content-Type
并通过默认template传递所有请求参数(包括人体)。有趣的是这一个
#set($allParams = $input.params())
{
"body-json" : $input.json('$'),
....
它应该是目前我传递给我的Java方法的Map<String, Object>
:
public void myHandler(Map<String, Object> input, Context context){
input.keySet().forEach((key) -> {
System.out.println(key + " : " + input.get(key));
});
}
而结果应该是这样的:
body-json : {"firstName":"Mr", "lastName":"Awesome"}
...
但我得到的是这样的:
body-json : {firstName=Mr, lastName=Awesome}
另一种可能性是将整个身体传递作为字符串:
"body" : $input.body
但是又只是“转换”到key=value
代替key:value
如何必须配置模板只需传递给我的身体,以便我可以在JSON解析器中使用它?