我试图了解如何在lambda代码中访问请求头和正文值。如果请求体是JSON格式,那么它似乎自动被解析并在事件对象中可用。
如何访问Lambda中任何类型的传入“内容类型”请求的完整查询字符串、请求正文、请求头(cookie)?
下面的编辑是我收集的信息,以帮助解决可能或可能不相关的问题。如果你愿意,请忽略它们。
“headers”键返回一个空值。使用$input.params('$')
或“$input.params('$')”
出错。
编辑2
尝试在方法请求中定义标头。仍未在lambda中获取用户代理值。
{
"request": $input.json('$'),
"headers": "$input.params()"
}
context.succeed("event.key32:"+JSON.stringify(event, null, 2) );
header={CloudFront-Forwarded-Proto=https, CloudFront-Is-Desktop-Viewer=true, CloudFront-Is-Mobile-Viewer=false, CloudFront-Is-SmartTV-Viewer=false, CloudFront-Is-Tablet-Viewer=false, Content-Type=application/json, Via=1.1 5d53b9570d94ce920abbd471.cloudfront.net (CloudFront), 1.1 95eea7baa7ec95c9a41eca9e3ab7.cloudfront.net (CloudFront), X-Amz-Cf-Id=GBqmObLRy6Iem9bJbVPrrW1K3YoWRDyAaMpv-UkshfCsHAA==, X-Forwarded-For=172.35.96.199, 51.139.183.101, X-Forwarded-Port=443, X-Forwarded-Proto=https}}
可以使用$input.params('header-name')
访问请求标头
令人惊讶的是,上面的代码无法访问User-Agent头。你需要跳过下面的hoop来取回它:
$context.identity.useragent
{
"reqbody": "$input.path('$')"
}
>
当头值包含双引号(“)时,不会执行lambda函数。(我在cloudwatch日志中没有看到此类请求的日志条目)。相反,http响应正文包含以下内容:
{
"Type": "User",
"message": "Could not parse request body into json."
}
我认为需要对此进行纠正,以便能够实现ETag机制进行缓存。
参考资料:
http://gsnedders.com/http-entity-tags-confusion
我更倾向于使用Lambda和Java8来设置,但是使用node.js的示例也有助于理解如何实现这一点。
我想获取在GraphQl查询调用期间传递的头值。在rest api HttpServletRequest的情况下,我们可以先做一些类似的事情。getheader() 我想从dataFetching环境中获取它,但从该值获取的上下文并没有让我从请求中获取标头值。 我不打算更改解析器方法调用,但任何改进代码的输入都会很好。
如何访问Flask routes中的查询参数或查询字符串?从烧瓶文档中看不明显。 下面的示例路由说明了我希望访问该数据的上下文。如果有人请求类似于,我希望能够访问字符串,或者能够检索类似于的参数值。
问题内容: 我正在使用Go中的程序包来处理POST请求。如何访问和解析对象中查询字符串的内容?我从官方文档中找不到答案。 问题答案: 根据定义,QueryString 位于URL中。您可以使用(doc)访问请求的URL 。URL对象具有一个返回类型的方法(doc),该类型只是QueryString参数的一个。 如果您要查找的是HTML表单提交的POST数据,那么(通常)这是请求正文中的键/值对。您
问题内容: 如何访问客户端发布到经典ASP服务器的内容?我知道有Request.Forms变量,但是客户端的请求不是使用Form发出的。客户端请求的主体只是使用标准POST语句生成的字符串。谢谢 问题答案: 如果客户端发送的请求的内容类型不是表单数据,则需要读取请求字节。在这种情况下,请求不是可通过名称- 值对访问的表单数据,因此您不能使用Request.Form集合。我建议研究BinaryRea