我一直试图从Chef内部调用api然后解析结果,但此刻我甚至无法调用api
这有效
curl -X PUT -H "X-API-KEY:The Key secret" -d "va1=a@var2-b" https://example.com/v1/endpointl1/endpointl2
我尝试过各种各样的事情,到目前为止,我最好的尝试是
Chef::HTTP.new('https://example.com').put('/v1/endpointl1/endpointl2', 'va1=a@var2-b',"X-API-KEY:The Key secret")
但是我得到了错误:无法将String转换为Hash
我认为是因为标题(X-API-KEY位)格式不正确
任何人都可以指出我正确的方向如何正确地调用api
由于
捐赠
答案 0 :(得分:0)
您也可以execute
command
使用curl ...
execute "curl-to-api" do
command "curl -m 5 -i -X POST -d ... etc ... #{chat_url}"
ignore_failure true
end
我自己的代码示例:
onTouch()
答案 1 :(得分:0)
感谢回复,它帮助我集中注意力。我对这一点感到有些困惑,因为我稍微调整了一下并收到了406消息,结果发现我甚至用curl得到了它,但它也给了我一个带有详细信息的服务器消息(json)
这就是我最后所做的
response=Chef::HTTP.new('https://api.pagely.com').put('/v1/domains/single', 'var1=abc&var2=def', ({'X-API-KEY' => 'mysecret'}))
print response
json = JSON.parse response
pgsiteid = json['id']
print pgsiteid
看起来很有效。如果Chef \ Ruby没有对406错误抱怨,那本来会很好,但我想这更像api的问题
最后一点是我从响应中获取值
由于
捐赠
答案 2 :(得分:0)
不要重写,请查看https://coderanger.net/chef-tips/#4。我知道所以不喜欢只是链接文档,但如果有人想要转录,那就去吧。基本上你想使用Chef::HTTP
。它有一些简单请求的访问器,并返回Net::HTTP
个响应对象。你唯一的变化应该是将标题数据作为哈希而不是我认为的字符串。