如何解决如何从请求中获取标头?
我正在尝试创建一个Webhook。我是Ruby的新手,但是正在设置一个非常简单的练习服务器。每次为我的github仓库之一创建新的问题/票证时,都会向我已设置为抓取有效负载的URL发出POST请求。我对此tutorial不太了解。
我可以使用以下代码访问发布在实际有效载荷/主体中的所有元素:
require 'sinatra'
require 'json'
post '/payload' do
request.body.rewind
payload_body = request.body.read
puts payload_body
如何获取标头的内容?我一直在浏览文档,但是没有运气。我尝试通过response
和request.headers
访问标头,但收到此错误:NoMethodError - undefined method `headers' for #<Sinatra::Request:0x0000000006de49e0>
如果我在这里缺少东西,请告诉我。谢谢。
这是我的POST请求中的标头示例:
Request URL: http://505db39aa8ef.ngrok.io:
Request method: POST
Accept: */*
content-type: application/json
User-Agent: GitHub-Hookshot/cf3e7e0
X-GitHub-Delivery: 8d7fe080-ecc2-11ea-9b34-d35efaaf3885
X-GitHub-Event: issues
X-GitHub-Hook-ID: 245792914
X-GitHub-Hook-Installation-Target-ID: 279687508
X-GitHub-Hook-Installation-Target-Type: repository
X-Hub-Signature: sha1=ed12f9e7a31b08f9109557d6a9dd899ca85de9b5
解决方法
request.get_header('HTTP_X_GITHUB_HOOK_INSTALLATION_TARGET_TYPE')
# or
request.env['HTTP_X_GITHUB_HOOK_INSTALLATION_TARGET_TYPE']
值得一提的是,sinatra将处理自定义标头:
- 添加前缀
HTTP_
- 将每个字母大写
- gsub
-
至_
您可以使用request.env
访问所有标头。
有关将添加什么变量的详细信息,HTTP_
您可以参考there
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。