2017-08-17 10 views
0

私はSwift 3でAWG APIGateway、Lambda、RDSを使用してモバイルアプリケーションを作成しています。インテグレーションリクエスト(AWS APIGateway)のリクエストパスをエスケープする方法

たち-東-1:POSTメソッドでは、私のような体の要素の一つに一意の識別子を渡しているXXXXXXXX-55b0-4917-82e3-85b3b093fa9c

しかし、中にGETメソッドでは、リクエストパスを使用してこのユーザーレコードを取得し、この値を渡しています。しかし、私はそれが要求パスとで結果だから、それはエンコードされたばかりだ推測している:

たち-東-1%3Axxxxxxxx-55b0-4917-82e3-85b3b093fa9c

それはラムダに当たったら、このよう(と私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

Dang!私はこれを投稿してから数分後に文字通り答えを見つけました。ここに解決策がありました:

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

urlDecode関数がトリックを行いました。これが他の人に役立つことを願っています!!

関連する問題