2012-02-08 18 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...のような文字列です。最後のコードは、文字列に別のパラメータを追加するだけです。問題が#{}のフラグメントである場合、この構文は、二重引用符で囲まれたrubyの中で、varの値を使用できます。

Net :: HTPPリクエストを実行するときに常にパラメータ文字列をエンコードする必要がありますか?別の方法がありますか?

ここではエンコードされているパラメータ文字列は表示されません。私が見るのは、レスポンスヘッダーとSHA1のレスポンスボディを比較して結果をチェックすることだけです。

本当にあなたの質問には関係ありません。私はSegfaultの問題を抱えながら、Net :: HTTPを離れました。私は現在、ネットワーク経由のすべてのリクエストに対してTyphoeusを使用しています。

+0

Question Typhoeusについて: Typhoeusから取得した 'response.body'を' 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

関連する問題