【问题标题】:How do I refactor an API call to use HTTParty?如何重构 API 调用以使用 HTTParty?
【发布时间】:2014-07-09 14:17:45
【问题描述】:

我有一个对 Twitter 的有效 API 调用。耶我!但问题是我更愿意将它重构为 HTTParty,然后我可以稍后对其进行扩展。关于我为什么不使用twitter gem 之类的东西有很多原因。它们主要是由于应用程序需要克服一些限制。

在这里,我有一段调用 Twitter 的工作代码:

class Twitter
  def validate
    consumer_key = OAuth::Consumer.new(
      ENV['TWITTER_CONSUMER_KEY'],
      ENV['TWITTER_CONSUMER_SECRET']
    )
    access_token = OAuth::Token.new(
      ENV['TWITTER_ACCESS_TOKEN'],
      ENV['TWITTER_ACCESS_SECRET']
    )

    baseurl = "https://api.twitter.com"

    address = URI "#{baseurl}/1.1/account/verify_credentials.json"

    http = Net::HTTP.new address.host, address.port
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER

    request = Net::HTTP::Get.new address.request_uri
    request.oauth! http, consumer_key, access_token

    http.start
    response = http.request request
    puts "The response status was #{response.code}"
  end
end

它仅依赖于oath gem

关键问题:如何将其封装到 HTTParty 中以使其更加模块化?

【问题讨论】:

    标签: ruby-on-rails ruby api twitter


    【解决方案1】:

    您可以将NET::HTTP 替换为HTTParty 以获得后者的好处,或者您可以加倍努力,使您的Twitter 模型包含HTTParty,以便它响应类似于ActiveRecord 的界面而它抽象出在后台发出所有这些 API 请求。

    决定真的取决于您的需求。您是否只需要向 Twitter 发出特定请求并显示结果,或者您想与 Twitter 进行更频繁的交互并将其视为您可以创建、检索、删除等的模型。

    无论您如何选择,我相信official readme 拥有您可能需要的所有信息(它甚至还有一个很好的 StackExchange 示例!)。

    【讨论】:

    • 是的。我希望我不必为了“过度设计”而付出额外的努力,但我处于那个位置。我认为它可以,ATM,就像阅读一样简单。我不会考虑写作和DM。我还没有在 repo 中找到任何关于 oauth 的内容......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2015-01-09
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多