2016-09-16 8 views
0
(カール作品)シェフからAPIを呼び出します
curl -X PUT -H "X-API-KEY:The Key secret" -d "[email protected]" https://example.com/v1/endpointl1/endpointl2 

私はいろいろなことを試してみました、私の最高の試みは、これまで私はしかし、私もAPIに</p> <p>を呼び出すことはできません。これは、</p> を作品現時点では、シェフの中からAPIを呼び出し、その結果を解析しようとしている<p>

Chef::HTTP.new('https://example.com').put('/v1/endpointl1/endpointl2', '[email protected]',"X-API-KEY:The Key secret") 

あるしかし、私はエラーを取得する:ハッシュの中に文字列を変換することはできません

私は推測0

があるため、ヘッダ(X-API-KEYビット)適切なフォーマットで

誰もが、私は、APIを呼び出すことができますどのように正しい方向に私を指すでし正しく

おかげ

されていないのです

グラント

答えて

0

あなたはまた、commandcurl ...

私自身のコード例を使用していますexecute経由でそれを行うことができます。

execute "curl-to-api" do 
    command "curl -m 5 -i -X POST -d ... etc ... #{chat_url}" 
    ignore_failure true 
end 
+0

なぜignore_failureですか? – Tensibai

+0

curlコマンドが失敗したため、レシピを停止しないようにしました。 – vikingsteve

+0

クラスタロックコールの場合は、引き続き幸福に続けてサービスを中断させてしまいます。コールの目的が何であるかについての洞察がなければ、ignore_failureの宣伝はIMOの悪い考えです。 – Tensibai

0

回答をいただきありがとうございます。私はちょっと微調整して406のメッセージを得たので、私はちょっと混乱していましたが、それでも私はカールでそれを持っていましたが、詳細も付いたサーバーメッセージ(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 

それは動作するように見えます。シェフ\ Rubyは406エラーでうめき声しなかった場合、それは素敵だっただろうが、私はそれがより多くのAPI

最後のビットが、私は

おかげ

に応答から値を取得しているとの問題であると思います

付与

+0

実際の問題をXY問題よりも記述するのはどうでしょうか?あなたはこのAPIから値を得ていて、要求をまったくしていません。 – Tensibai

0

https://coderanger.net/chef-tips/#4を書き直してください。私はあなたがドキュメントをリンクするのが好きではないことを知っていますが、他の誰かが転記したい場合は、それに行きましょう。基本的にはChef::HTTPを使用します。単純な要求のためのアクセサーをいくつか持ち、Net::HTTP応答オブジェクトを返します。あなたからの唯一の変更は、私が考える文字列の代わりにヘッダデータをハッシュとして入れることです。

関連する問題

 関連する問題