使用 API 网关,我想拦截集成请求,更改模型,然后通过主体映射模板将其转发到端点。
例如,我想将 MatterGUID 属性更改为 MatterId + 值。
如果我在模板中包含我的整个模型,它工作正常;
#set($inputRoot = $input.path('$'))
{
"Property1" : "$inputRoot.Property1",
"MatterId" : "$inputRoot.MatterGUID",
"Property2" : "$inputRoot.Property2",
"Property3" : "$inputRoot.Property3"
}
但是,我想通过只更新需要更改的字段来更新我的模型。即类似的东西:
#set($inputRoot = $input.path('$'))
{
"MatterId" : "$inputRoot.MatterGUID"
}
但是,这样做只会将 MatterId 传递到端点,而不是所有其他属性 - 我可以理解为什么会发生这种情况,但想知道我缺少什么以包含整个对象但已更改MatterGUID 值。
几乎就像我可以在模型上运行 replaceAll 并让它只影响我想要的属性:
$inputRoot.Replace("MatterGUID", "MatterId")
最佳答案
模型不是有效负载应包含的内容的真实来源,映射模板才是。目前无法在负载中包含模型中定义但映射模板中不存在的属性。
关于aws-api-gateway - 用于对请求进行单一更改的 API 网关映射模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44581854/