2012-02-08 4 views
0

JSON API에 요청하는 작은 Rails 앱을 개발하고, 매개 변수를 초기 양식에 도입하고, 실제 응답을 받았는지 확인한 다음 결과를 렌더링해야하는지 확인해야합니다 보기 (html.erb)로.JSON API 요청 앱 (레일), 렌더링 결과

이 단계를 수행하기 위해 어디에서 좋은 자료를 얻을 수 있습니까? 어떤 도움도 환영합니다.

params_string = "whatever" 
    params_string_with_api_key = params_string + "&" + @@API_KEY 
    hashkey = Digest::SHA1.hexdigest(params_string_with_api_key) 
    params_string += "&hashkey=#{hashkey}" 

    res = Net::HTTP.get_response("api.somecompany.com", "/some/url.json?#{params_string}") 

    res_sha1 = Digest::SHA1.hexdigest(res.body + @@API_KEY) 

    @verified = res["X-Somecompany-Response-Signature"] == res_sha1 

    parsed_json = ActiveSupport::JSON.decode(res.body) 
    @results = parsed_json["results"] 

는 항상 당신이 인터넷 :: HTPP 요청을 수행 할 때 매개 변수 문자열을 인코딩 할 필요가 :

는 좀 가까운 예를 읽고 있어요? 다른 방법이 있습니까?

정확히 params_string += "&hashkey=#{hashkey}"은 무엇입니까?

감사합니다.

답변

0

정확히 params_string + = "& hashkey = # {hashkey}"는 무엇입니까?

params_string?param1=val&param2=val2...과 같은 문자열입니다. 마지막 코드는 문자열에 다른 매개 변수를 추가하는 것입니다. 문제가 #{} 조각 인 경우이 구문은 루비로 큰 따옴표로 묶은 문자열로 var의 값을 사용할 수 있습니다.

Net :: HTPP 요청을 할 때 매개 변수 문자열을 항상 인코딩해야합니까? 다른 방법이 있습니까?

여기에 인코딩되는 매개 변수 문자열이 표시되지 않습니다. 내가 보는 모든 것은 응답 헤더를 SHA1의 응답 본문과 비교하여 결과를 확인하는 것입니다.

정말로 당신의 질문과 관련이 없습니다. 나는 Segfault에 문제가있는 동안 Net :: HTTP를 떠났다. 이제 네트워크를 통한 모든 요청에 ​​대해 Typhoeus을 사용합니다.

+0

Typhoeus에 대한 질문 : Typhoeus에서 가져온 것과 같은 방법으로'res.body'를 사용하여 NET :: HTTP를 사용할 수 있습니까? 위의 예제에서이 라인을 전환해야합니까? res = Net :: HTTP.get_response ("api.somecompany.com", "/some/url.json?#{params_string} ") Typhoeus를 사용하는 코드는 어떻게됩니까? –

+0

Typhoeus README는이 정보에 대해 매우 완벽합니다. 'Typhoeus :: Hydra' 인스턴스에 대기열에 넣고 실행시킨'Typhoes :: Request' 객체를 사용할 수 있습니다. 아니면'res = Typhoeus :: Request.get (url, ...)'을 사용하여 "빠른"방법을 사용할 수 있습니다. 어쨌든 일단 응답을 받으면 바로 지금 사용하고있는 것처럼'reponse.body '를 사용할 수 있습니다. – ksol