作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在这个问题中How to pass a querystring or route parameter to AWS Lambda from Amazon API Gateway
演示如何使用 API 网关将查询字符串参数映射到 AWS lambda。我想做同样的事情,但映射 POST 值而不是查询字符串。我尝试过:
{
"values": "$input.params()"
}
但没有用,我没有看到实际的表单数据。顺便说一句,我发布使用:
application/x-www-form-urlencoded
我从我的 lambda 函数中得到了响应,所以我知道它调用 lambda 很好,但我的问题是我在任何地方都看不到 POST 参数。我不知道如何绘制它们。我将得到的所有内容转储到 Lambda 端,如下:
{"values":"{path={}, querystring={}, header={Accept=*/*, Accept-Encoding=gzip, deflate, Accept-Language=en-US,en;q=0.8, Cache-Control=no-cache, CloudFront-Forwarded-Proto=https, CloudFront-Is-Desktop-Viewer=true, CloudFront-Is-Mobile-Viewer=false, CloudFront-Is-SmartTV-Viewer=false, CloudFront-Is-Tablet-Viewer=false, CloudFront-Viewer-Country=US, Content-Type=application/x-www-form-urlencoded, Origin=chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop, Postman-Token=7ba28698-8753-fcb1-1f48-66750ce12ade, Via=1.1 6ba5553fa41dafcdc0e74d152f3a7a75.cloudfront.net (CloudFront), X-Amz-Cf-Id=sc8C7dLcW0BHYopztNYrnddC0hXyFdBzHv0O9aWU1gKhd1D_J2HF3w==, X-Forwarded-For=50.196.93.57, 54.239.140.62, X-Forwarded-Port=443, X-Forwarded-Proto=https}}"}
最佳答案
r7kamura 的回答很好。另外,这里有一个适用于所有情况(假设 POST)的 application/x-www-form-urlencoded
的易于理解且强大的映射模板示例:
{
"data": {
#foreach( $token in $input.path('$').split('&') )
#set( $keyVal = $token.split('=') )
#set( $keyValSize = $keyVal.size() )
#if( $keyValSize >= 1 )
#set( $key = $util.urlDecode($keyVal[0]) )
#if( $keyValSize >= 2 )
#set( $val = $util.urlDecode($keyVal[1]) )
#else
#set( $val = '' )
#end
"$key": "$val"#if($foreach.hasNext),#end
#end
#end
}
}
它将转换输入
name=Marcus&email=email%40example.com&message=
进入
{
"data": {
"name": "Marcus",
"email": "email@example.com",
"message": ""
}
}
Lambda 处理程序可以像这样使用它(这个返回所有输入数据):
module.exports.handler = function(event, context, cb) {
return cb(null, {
data: event.data
});
};
关于amazon-web-services - 如何从 Amazon API Gateway 将参数从 POST 传递到 AWS Lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32057053/
我是一名优秀的程序员,十分优秀!