gpt4 book ai didi

amazon-web-services - API网关 - 正文映射模板 - 可选正文参数

转载 作者:行者123 更新时间:2023-12-04 08:05:41 26 4
gpt4 key购买 nike

我有一个 POST API 网关方法,我向该方法发送以下 application/json 正文,以便将参数从该方法传递到该方法所连接的 Lambda:

{ 
"otherClientId": "12345",
"message": "Text",
"seconds": 0,
"hours": 0
}

我正在使用以下映射模板:

#set($inputRoot = $input.path('$'))
{
"authorizedUser": "$context.authorizer.principalId",
"otherClientId": "$inputRoot.otherClientId",
"message": "$inputRoot.message",
"amount": $inputRoot.amount,
"duration": $inputRoot.duration
}

我遇到的问题是,当我尝试发送没有金额或持续时间的请求时,收到“错误字符串”错误。由于某种原因,这些参数似乎不是可选的(但我需要它们!)。我可以错过其他参数,例如消息,但不能错过两个数字参数。

还有其他人经历过这种情况吗?或者有人可以指出我可能遗漏的明显情况吗? AWS 文档关于这个主题的内容有点稀疏。

最佳答案

可能会发生这种情况,因为如果不传递这些参数,您的 json 请求将如下所示:

#set($inputRoot = $input.path('$'))
{
"authorizedUser": "$context.authorizer.principalId",
"otherClientId": "$inputRoot.otherClientId",
"message": "$inputRoot.message",
"amount": ,
"duration":
}

最简单的修复方法是将 $inputRoot.amount$inputRoot.duration 用引号括起来:

#set($inputRoot = $input.path('$'))
{
"authorizedUser": "$context.authorizer.principalId",
"otherClientId": "$inputRoot.otherClientId",
"message": "$inputRoot.message",
"amount": "$inputRoot.amount",
"duration": "$inputRoot.duration"
}

或者,您可以使用 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
}

关于amazon-web-services - API网关 - 正文映射模板 - 可选正文参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38647604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com