2017-09-25 9 views
0

要求ボディとクエリ文字列のパラメータをlambdaに送る前に結合したいと思う。のは、私は以下のようにラムダでエンティティを持っているとしましょう:Aws Apiゲートウェイインテグレーションリクエストボディをリクエストするためにプロパティを追加する方法は?

Class Person { 
private String firstName; 
private String lastName; 
private String language; 
} 

そして、あなたは「言語」を参照してくださいなどのAPIゲートウェイに送信されたJSONが{"firstName":"Foo","lastName":"Bar"} あるフィールドはリクエストボディでが不足しています。私はこの言語フィールドをquerystringから取得し、jsonに追加したいと思います。 どのようにしてtihを達成できますか?

どうすれば統合リクエストセクションで実行できますか? 例:

$input.json(x).append("language":"$input.params('name')") 

貴重な情報が見つかりませんでした。 ありがとうございます。

答えて

2

統合要求セクションでボディマッピングテンプレートを使用して、要求本体とクエリ文字列を取得できます。リクエストボディとクエリ文字列からのデータを持つボディマッピングテンプレートで新しいJSONを構築します。ボディマッピングテンプレートを追加すると、ビジネスロジックはボディマッピングテンプレートで構築したJSONを取得します。クエリ文字列を取得するためにボディマッピングテンプレート内

行ってください、

$input.params('querystringkey') 

例えばボディマッピングテンプレートの内側、

#set($inputRoot = $input.path('$')) 
{ 
"firstName" : "$input.path('$.firstName')", 
"lastName" : "$input.path('$.lastName')" 
"language" : "$input.params('$.language')" 
} 

ボディマッピングテンプレートの詳細

+0

ためhttps://aws.amazon.com/blogs/compute/tag/mapping-templates/をお読みください私は私はそれを行う場合、ラムダのエンティティを変更する必要があるので、新しいjsonを構築したくありません。ありがとう。 –

+0

エンティティ構造に変更を加えずに、ボディマッピングテンプレートに完全なエンティティを追加できます。または、コード内で直接クエリ文字列を取得してもよろしいですか?私は少し私の答えを変更しています。 –

関連する問題