よろしくお願い致します。
前提・実現したいこと
DynamoDBへの書き込みを行うLambda関数に、HTMLのフォームからポストでパラメータを渡して、DynamoDBへの書き込みを行いたい。
なお、API Gatewayでは「Lambda プロキシ統合の使用」にチェックを入れており、マッピングテンプレートは作成していない。
発生している問題・エラーメッセージ
以下の2つの問題が発生しており、目的が達成できない。
- Lambda関数側が値を受け取った時、日本語の値が文字化けしてしまう。
- パラメータを入力した文字列をDynamoDBに書き込むことができない。
Lambda関数でconsole.log(event.body);
でログを確認すると、
id=88158&items_id=1&title=%A4%A2%A4%A2%A4%A2&message=%CE%C9%A4%A4%A4%A4
のようになってしまっていることが確認できた。(titleには"あああ"、messageには"良いい"と入力しています)
また、event.bodyはStringのようなので、JSON形式に変換するためにJSON.parse(event.body)としたが、下記のエラーが出た。
Unexpected token i in JSON at position 0
該当のソースコード
html
1<form method="post" action="https://**********.execute-api.us-east-1.amazonaws.com/dev"> 2 <input type="hidden" name="id" value=88158> 3 <input type="hidden" name="items_id" value=1> 4 Title<input type="text" name="title"><br> 5 Review<input type="text" name="message"><input type="submit" value="送信"> 6</form>
Nodejs
1var AWS = require('aws-sdk'); 2var docClient = new AWS.DynamoDB.DocumentClient(); 3 4 5exports.handler = (event, context, callback) => { 6 console.log(event.body); 7}
他に試したこと
・API Gatewayのメソッドレスポンスのコンテンツタイプを"application/json;charset=UTF-8"に変えたが変化なし。
・詳しくないのでわからないが、文字化けした後の形式が「URLエンコード」というものっぽかったので、node.jsの"decodeURIComponent"というものを使ってみたが、変換できなかった。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。