我正在使用AWS APIGateway,Lambda和RDS在Swift 3中编写移动应用程序。在POST方法中,我在身体的一个元素中传递唯一标识符,例如:
我们 - 东 - 1:XXXXXXXX-55b0-4917-82e3-85b3b093fa9c
但是,在GET方法中,我使用请求路径来检索此用户记录并传递此值。但是,我猜测它已被编码,因为它是一个请求路径,结果是:
我们 - 东 - 1%3Axxxxxxxx-55b0-4917-82e3-85b3b093fa9c
一旦它以这种方式击中Lambda(和我的RDS),由于冒号的逃逸,它将找不到记录。因此,我可以" unescape" “积分请求”模板中的此值?
我尝试了一个模板,例如:
#set($inputRoot = $input.path('$'))
{
"user_identity" : "$util.decodeURIComponent($input.params('useridentity'))"
}
但是,这不起作用。我在日志中得到以下内容:
Thu Aug 17 02:32:47 UTC 2017 : HTTP Method: GET, Resource Path: /user/us-east-1%3Axxxxxxxx-55b0-4917-82e3-85b3b093fa9c
Thu Aug 17 02:32:47 UTC 2017 : Endpoint request body after transformations: {
"user_identity" : ""
}
我也尝试过使用decodeURI,但这给了我相同的结果。我在这里缺少什么?
答案 0 :(得分:2)
荡!在我发布这个帖子后几分钟,我确实找到了答案。这是解决方案:
#set($inputRoot = $input.path('$'))
{
"user_identity" : "$util.urlDecode($input.params('useridentity'))"
}
urlDecode函数可以解决问题。我希望这可以帮助别人!!