Ros*_*ssP 2 post http-post amazon-web-services aws-lambda aws-api-gateway
我有一个POST API网关方法,我将向其中发送以下application / json主体,以将参数从其传递到该方法所连接的Lambda:
{
"otherClientId": "12345",
"message": "Text",
"seconds": 0,
"hours": 0
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下映射模板:
#set($inputRoot = $input.path('$'))
{
"authorizedUser": "$context.authorizer.principalId",
"otherClientId": "$inputRoot.otherClientId",
"message": "$inputRoot.message",
"amount": $inputRoot.amount,
"duration": $inputRoot.duration
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,我尝试发送没有数量或持续时间的请求时收到“错误字符串”错误。由于某些原因,这些参数似乎不是可选的(但我需要将它们设为!)。我能够错过其他参数,例如消息,但不能错过两个数字参数。
有人遇到过这种情况吗?或者有人可以指出我很可能会失踪的明显现象吗?AWS文档对此主题很少。
可能是因为没有传递这些参数,您的json请求看起来像这样:
#set($inputRoot = $input.path('$'))
{
"authorizedUser": "$context.authorizer.principalId",
"otherClientId": "$inputRoot.otherClientId",
"message": "$inputRoot.message",
"amount": ,
"duration":
}
Run Code Online (Sandbox Code Playgroud)
要解决这个简单的方法是包装$inputRoot.amount
和$inputRoot.duration
引号:
#set($inputRoot = $input.path('$'))
{
"authorizedUser": "$context.authorizer.principalId",
"otherClientId": "$inputRoot.otherClientId",
"message": "$inputRoot.message",
"amount": "$inputRoot.amount",
"duration": "$inputRoot.duration"
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用if条件连接请求,例如:
#set($hasLimit = $input.params('limit') != "")
#set($hasOffset = $input.params('offset') != "")
#set($hasPeriod = $input.params('period') != "")
#set($hasType = $input.params('type') != "")
{
"environment": "$input.params('environment')"
#if($hasLimit),"limit": $input.params('limit')#end
#if($hasOffset),"offset": $input.params('offset')#end
#if($hasPeriod),"period": "$input.params('period')"#end
#if($hasType),"type": "$input.params('type')"#end
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1565 次 |
最近记录: |