2017-08-17 7 views
0

Ich schreibe eine mobile Anwendung in Swift 3 und mit AWS APIGateway, Lambda und RDS. In der POST-Methode, bin ich vorbei eine eindeutige Kennung in einem der Elemente des Körpers wie zum Beispiel:Unescap Anforderungspfad in Integrationsanforderung (AWS APIGateway)

us-east-1: xxxxxxxx-55b0-4917-82e3-85b3b093fa9c

jedoch in einem GET-Methode, ich verwende einen Request-Pfad, um diesen Benutzerdatensatz abzurufen und diesen Wert zu übergeben. Aber ich vermute, es ist codiert bekommen, da es ein Anforderungspfad ist und daraus resultierende mit:

us-east-1% 3Axxxxxxxx-55b0-4917-82e3-85b3b093fa9c

Sobald es Lambda diese Weise trifft (und meine RDS), wird es aufgrund der Flucht des Dickdarms die Aufzeichnung nicht finden. Kann ich diesen Wert in der Integrationsanforderungsvorlage als "entpacken"?

Ich habe eine Vorlage versucht, wie zum Beispiel:

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

jedoch, das nicht funktioniert. Ich erhalte die folgende in meinem Logs:

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" : "" 
} 

Ich habe auch versucht decodeURI verwenden, aber das gibt mir das gleiche Ergebnis. Was fehlt mir hier?

Antwort

1

Dang! Ich fand die Antwort ein paar Minuten nach meiner Veröffentlichung. Hier war die Lösung:

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

Die urlDecode-Funktion hat den Trick gemacht. Ich hoffe, das hilft jemand anderem !!

Verwandte Themen