Aws Api网关集成请求如何将属性附加到请求正文?
问题描述:
我想在发送给lambda之前将请求主体和查询字符串参数结合起来。比方说,我在拉姆达实体如下:Aws Api网关集成请求如何将属性附加到请求正文?
Class Person {
private String firstName;
private String lastName;
private String language;
}
和发送到API网关的JSON是{"firstName":"Foo","lastName":"Bar"}
正如你看到的“语言”场在请求主体缺少。我想从查询字符串中获取这个语言字段并添加到json。 我该如何达到目标?
有没有办法在集成请求节? 例如:
$input.json(x).append("language":"$input.params('name')")
我找不到任何有价值的信息。 在此先感谢。
答
您可以在集成请求部分使用正文映射模板并获取请求正文和查询字符串。在身体映射模板中构建新的JSON,该模板将具有来自请求正文和查询字符串的数据。当我们添加body map模板时,您的业务逻辑将获得我们在body map模板中构建的JSON。
体内映射模板获得查询字符串,请做,
$input.params('querystringkey')
例如身体映射模板内,
#set($inputRoot = $input.path('$'))
{
"firstName" : "$input.path('$.firstName')",
"lastName" : "$input.path('$.lastName')"
"language" : "$input.params('$.language')"
}
请阅读https://aws.amazon.com/blogs/compute/tag/mapping-templates/对身体映射模板
我更多的细节不想构建新的json,因为如果我这样做,我必须更改Lambda中的实体。谢谢。 –
您可以将完整的实体添加到正文映射模板中,而无需更改实体结构。或者你很乐意直接在代码中获取查询字符串?我已经改变了我的答案了一下。 –