2012-02-08 88 views
0

我需要開發一個小的Rails應用程序,它向JSON API發出請求,將參數引入初始表單,檢查是否得到真實響應,然後呈現結果進入一個視圖(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"] 

是否總是在需要的時候,你做的Net :: HTPP請求編碼參數字符串?有另一種方法嗎?

究竟是什麼params_string += "&hashkey=#{hashkey}"

謝謝!

回答

0

究竟是什麼params_string + =「& hashkey =#{hashkey}」?

params_string是一個看起來像?param1=val&param2=val2...的字符串。你最後一段代碼只是將另一個參數附加到字符串。如果您的問題與#{}片段有關,則此語法(使用雙引號的紅寶石字符串)允許您使用var的值。

當您執行Net :: HTPP請求時,是否總是需要對參數字符串進行編碼?有另一種方法嗎?

我看不到在此編碼的參數字符串。我所看到的只是檢查結果,通過比較響應頭和SHA1響應主體來完成。

與你的問題沒有什麼關係:我離開了Net :: HTTP,而後又遇到了段錯誤。我現在使用Typhoeus通過網絡的所有請求。

+0

關於Typhoeus的問題: 我可以像使用NET :: HTTP一樣使用'res.body'來使用Typhoeus的'response.body'嗎? 我的意思是,從我上面的示例中,我是否需要切換此行: res = Net :: HTTP.get_response(「api.somecompany.com」,「/some/url.json?#{params_string} 「) 如何使用Typhoeus的代碼? – 2012-02-08 13:03:27

+0

Typhoeus自述文件對於這些信息非常完整。您可以使用'Typhoes :: Request'對象,你會在'百頭巨怪:: Hydra'比如排隊,然後運行。或者你可以使用 「快速」 的方式使用'RES =百頭巨怪:: request.GET中(URL,...)'。在任何情況下,一旦你有你的迴應,你可以用'就像你正在使用它現在reponse.body'。 – ksol 2012-02-08 13:07:20