AWS API GatewayのHTTP API(β版)がLambda関数に渡す値が想定と違っていた話
3496 ワード
最近 AWSのAPI Gatewayに、HTTP API(β版)が実装された。
試してみたところ、ちょっとハマったので備忘録に。
<html>
<head></head>
<body>
<form method="post" action="xxxxxxxx">
<input name="userName" value="a">
<input name="userPass" value="a">
<button>
</form>
</body>
</html>
まずは、ありきたりなフォームを作成して、作成したHTTP APIにsubmitする。
統合先のLambda関数で確認すると、bodyの情報がREST API(Lambdaプロキシ統合を使用)のときと違う。
// Lambda関数(Node.js 12.x)
exports.handler = async event => {
console.log(event.body);
// REST API(Lambdaプロキシ統合使用)の場合は 'userName=a&userPass=a'
// HTML API(β版)の場合は 'dXNlck5hbWU9YSZ1c2VyUGFzcz1h'
};
どうやらBase64でエンコードされているらしい。
isBase64Encoded をデコードの判定に使おう。
// Lambda関数(Node.js 12.x)
exports.handler = async event => {
const bodyString = event.isBase64Encoded ? Buffer.from(event.body, 'base64').toString() : event.body;
console.log(bodyString);
// REST API(Lambdaプロキシ統合使用)の場合は 'userName=a&userPass=a'
// HTML API(β版) の場合も 'userName=a&userPass=a'
};
良かった。
解決できた。
Author And Source
この問題について(AWS API GatewayのHTTP API(β版)がLambda関数に渡す値が想定と違っていた話), 我々は、より多くの情報をここで見つけました https://qiita.com/minmax/items/ac45bc54943f828f8d42著者帰属:元の著者の情報は、元の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 .