AWS API Gateway集成请求正文映射模板抛出传入的值

问题描述 投票:0回答:1

我在使用AWS API Gateway时遇到问题,其中我的所有输入组合都有效,除了它抛出另一个传入的值。

这是我的模板......

#set($greet = $input.params('greet'))
#set($name = $input.params('username'))
{
#if($greet != "")
    "greet": "$greet"
    #if($name != "")
    ,
    #end
#end
#if($name != "")
    "name": "$name"
#end
}

我的网址是/user/{username}/say/{greet}

当我测试端点并且没有发送问候语或用户名时,它可以工作。当我发送问候语但没有用户名时,它可以正常工作。当我发送问候语和用户名时,它会起作用。 (通过“工作”我的意思是它将值传递给我的lambda函数。)

但由于某些原因,当我发送用户名但没有问候语时,映射完全抛出用户名并且不发送它(就好像$ name ='')。它仍然转到正确的端点,因为正确的lambda函数执行,映射只发送一个空对象而不是只具有name属性的对象。

谁能看到我做错了什么?

amazon-web-services aws-lambda aws-api-gateway
1个回答
0
投票

你的映射很好。我猜你的API网关配置需要针对空问候的场景进行调整。

如果不存在问候语,AWS不会执行变量后面的方法绑定,而是执行父资源(在本例中为'/ say'方法绑定)。所以你需要两个方法定义,一个有问候,一个没有。两者都可以完全相同,因为您的映射模板支持两种结果。

api resource structure

© www.soinside.com 2019 - 2024. All rights reserved.