2017-08-17 158 views
0

我正在Swift 3中编写移动应用程序并使用AWS APIGateway,Lambda和RDS。在POST方法,我传递的唯一标识符在所述主体的所述元件,诸如之一:如何在集成请求中使用请求路径(AWS APIGateway)

我们 - 东 - 1:XXXXXXXX-55b0-4917-82e3-85b3b093fa9c

然而,在GET方法,我使用请求路径来检索此用户记录并传递此值。不过,我猜它变得编码,因为它是一个请求路径,并导致:

美国东1%3Axxxxxxxx-55b0-4917-82e3-85b3b093fa9c

一旦它击中LAMBDA这样(和我RDS),它不会因冒号转义而找到记录。因此,我可以在集成请求模板中“撤销”这个值吗?

我已经尝试了模板,如:

#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,但那给了我相同的结果。我在这里错过了什么?

回答

1

当!在我发布这个数据之后几分钟,我从字面上找到了答案。这里是解决方案:

#set($inputRoot = $input.path('$')) 
{ 
    "user_identity" : "$util.urlDecode($input.params('useridentity'))" 
} 

urlDecode函数做了窍门。我希望这可以帮助别人!