2017-06-16 30 views
1

使用API​​网关,我想拦截集成请求,更改模型,然后通过正文映射模板将其转发到端点。用于请求单个更改的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")

回答

0

该模型是不是真理对有效载荷应包含什么源,映射模板是。目前不可能在模型中定义的有效载荷中包含属性,但映射模板中不存在这些属性。

+0

这是否意味着我需要为每个我想定制的映射模板包含整个模型?即使用正文映射中的“生成模板”,并根据需要调整属性? – Hexie