2016-09-16 2 views
0

내가 그러나 나는 심지어 API를요리사에서 API (컬 작품을)를 호출

작동을 호출 할 수 없습니다 순간에, 요리사 내에서 API를 호출 한 후 결과를 분석하기 위해 노력 해왔다
curl -X PUT -H "X-API-KEY:The Key secret" -d "[email protected]" https://example.com/v1/endpointl1/endpointl2 

나는 여러 가지를 시도, 내 가장 친한 시도는 지금까지

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 

그것은 좋아 보인다. 요리사 \ 루비가 406 오류에 신음하지 않은 경우이 좋았을 것이지만, 그 이상이 API를

마지막 비트가 나를

감사

에게 응답에서 값을 받고의 문제 것 같다

부여

+0

XY 문제보다 실제 문제를 설명하는 것은 어떻습니까? 당신은 문제 가이 API에서 요청을 전혀하지 않는 얻고있다. – Tensibai

0

이 내용을 다시 작성하는 대신 https://coderanger.net/chef-tips/#4을 확인하십시오. 나는 SO를 그냥 문서를 연결하는 것을 좋아하지 않는다는 것을 알고 있지만, 누군가 다른 사람이 쓰기를 원할 경우 그것을 위해 간다. 기본적으로 Chef::HTTP을 사용하고 싶습니다. 간단한 요청을위한 접근자를 몇 개 가지고 있으며 Net::HTTP 응답 객체를 반환합니다. 헤더 데이터를 문자열 대신 해시로 저장하는 것이 유일한 변경 사항입니다.