【问题标题】:JSON API request app (rails), rendering resultsJSON API 请求应用(rails),渲染结果
【发布时间】:2012-02-08 20:43:16
【问题描述】:

我需要开发一个小型 Rails 应用程序,它向 JSON API 发出请求,将参数引入初始表单,检查我们是否得到真正的响应,然后将结果呈现到视图中 (html.erb)。

您知道我在哪里可以找到执行这些步骤的好材料吗?欢迎任何帮助。

我正在阅读一些附近的例子:

    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}" 到底是什么?

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby json


    【解决方案1】:

    params_string += "&hashkey=#{hashkey}" 到底是什么意思?

    params_string 是一个类似于?param1=val&param2=val2... 的字符串。您的最后一段代码只是将另一个参数附加到字符串。如果您的问题与 #{} 片段有关,则此语法(在 ruby​​ 双引号字符串中)允许您使用 var 的值。

    当您执行 Net::HTPP 请求时,是否总是需要对参数字符串进行编码?还有其他方法吗?

    我没有看到这里编码的参数字符串。我所看到的只是对结果的检查,通过将响应标头与 SHA1 的响应正文进行比较来完成。

    与您的问题无关:前一段时间我离开了 Net::HTTP,遇到了段错误问题。我现在对通过网络的所有请求使用Typhoeus

    【讨论】:

    • 关于 Typhoeus 的问题:我可以像使用 NET::HTTP 使用 res.body 一样使用从 Typhoeus 获得的 response.body 吗?我的意思是,从我上面的例子中,我只需要切换这一行: res = Net::HTTP.get_response("api.somecompany.com", "/some/url.json?#{params_string}") 如何是使用 Typhoeus 的代码吗?
    • Typhoeus README 对于这些信息来说非常完整。您可以使用 Typhoes::Request 对象,您将在 Typhoeus::Hydra 实例中排队,然后运行。或者您可以使用res = Typhoeus::Request.get(url, ...) 的“快速”方式。无论如何,一旦您收到回复,您就可以像现在一样使用reponse.body
    猜你喜欢
    • 1970-01-01
    • 2019-04-01
    • 2011-12-11
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多