在Rails中创建与外部API通信的类的最佳实践是什么?

时间:2014-07-20 04:57:23

标签: ruby-on-rails ruby json api

我需要构建一个类,用于与Rails应用程序中的外部遗留API进行通信。它不是RESTful API,而只是有一些返回结构化JSON的任意输入。然后,需要将此JSON转换为ActiveRecord模型(JSON中的键名称与数据库中的列名称不匹配)并保存。

我目前的想法如下(假设我们的旧应用程序被称为Legacy):lib/legacy/api.rb处的文件,内容类似于:

module Legacy
  class Api
    @@host = "https://api.legacy.com.au"

    def get_listings
      self.get_path("get_places")
    end

    protected

      def get_path(path)
        uri = URI.parse(@@host + "/#{path}"
        req = Net::HTTP.new(uri.host, uri.port)
        req.use_ssl = true
        res = req.get(uri.request_uri)
        self.parse_json(res.body)
      end

      def parse_json(response)
        ActiveSupport::JSON.decode(response)
      end
  end
end

我希望在我的代码中使用API​​,例如Legacy::Api.get_listings

我想要解决的是,这是最好的做法,还是有更好的方法来构建这种类。此外,如果这是对API进行外部调用的最佳方式。

0 个答案:

没有答案