我需要构建一个类,用于与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进行外部调用的最佳方式。