マッピングテンプレートでGETの可変パラメータに対応する
1791 ワード
LambdaとAPI GatewayでAPIを作成していて、GETのパラメータがあったり無かったりする場合にマッピングテンプレートでどう対応するかのメモ。
探すのにだいぶ時間かかったので・・
以下のようなGETメソッドに対応したいのです。
https://www.example.com/api/hoge?user_id=abc
https://www.example.com/api/hoge?user_id=abc&limit=100
通常のマッピングテンプレートの指定方法
{
"user_id" : "$input.params('user_id')",
"limit" : "$input.params('limit')"
}
{
"user_id" : "$input.params('user_id')",
"limit" : "$input.params('limit')"
}
ですが、上記の書き方でlimitの引数を入れない状態でAPIをコールすると、以下のようなエラーが返却されます。
"errorMessage": "Unable to marshal response: ClientError('An error occurred (ValidationException) when calling the Query operation: The provided starting key is invalid: One or more parameter values were invalid: An AttributeValue may not contain an empty string') is not JSON serializable", "errorType"
解決方法
#set($limit = $input.params('limit'))
{
#if($limit && $limit.length() != 0)
"limit": "$input.params('limit')",
#end
"user_id" : "$input.params('user_id')"
}
参考
#set($limit = $input.params('limit'))
{
#if($limit && $limit.length() != 0)
"limit": "$input.params('limit')",
#end
"user_id" : "$input.params('user_id')"
}
Author And Source
この問題について(マッピングテンプレートでGETの可変パラメータに対応する), 我々は、より多くの情報をここで見つけました https://qiita.com/hellscare/items/e0ba2e971be71f49ad54著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .