我有一个API GET方法与lambda集成,在lambda集成映射模板。
映射模板:
{
"name" : "$input.params('name')",
"std_out" : "$input.params('std_out')"
}
条件是将std_out
的默认值设置为none,但如果用户在std_out
中发送某些内容,则将为其分配用户值。我不知道如何使std_out默认为none,但仍然接受输入,如果用户传递任何。我尝试过的事情:
- 我认为的一种方法是,而不是使用GET,我将使用POST方法,不会使用任何映射模板。但这不是标准的方式。
- 如果不传递任何值,我可以要求用户发送None,但仍在探索是否可以在我的级别上做一些事情来减少用户的开销。那么使用GET方法有什么解决方案吗?
虽然VTL变量似乎允许替代值为空时,显然API网关不支持这一点,并且无法转换请求。
下一个最佳选择是使用内联if/else条件来执行相同的操作:## setting to a variable for readability, but not strictly necessary
#set( $std_out = $input.params('std_out') )
{
"name" : "$input.params('name')",
"std_out": #if( $std_out != '' )"$std_out"#{else}"None"#end
}
如果用户没有传递字段,您想跳过传递字段,请将整个字段包装在if/else中:
{
## putting before 'name' so we don't have to deal with the comma there
#if( $input.params('std_out') != '' )
"std_out": "$input.params('std_out')",
#end
"name" : "$input.params('name')"
}