使用Rails(HTTP请求)连接到Web服务?

use*_*052 6 ruby api connection ruby-on-rails ruby-on-rails-3

我正在使用Ruby on Rails 3,我正在尝试实现API以从Web服务检索帐户信息.也就是说,我想连接到具有Account类的Web服务,并从showURI中路由的操作中获取信息http://<site_name>/accounts/1.

这时,在accounts_controller.rb我的Web服务文件中:

class AccountsController < ApplicationController
  def show
    @account = Account.find(params[:id])

    respond_to do |format|
      format.html
      format.js
      format.json { render :json => @account.to_json }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

现在我需要一些建议来连接到Web服务.在客户端应用程序中,我应该有一个HTTP GET请求,但这是我的问题:连接到发出HTTP请求的Web服务的"最佳"方法是什么?

客户端应用程序中的此代码有效:

url = URI.parse('http://<site_name>/accounts/1.json')
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http|
  http.request(req)
}

@output = JSON(res.body)["account"]
Run Code Online (Sandbox Code Playgroud)

但是,上面的代码是"实现API的方式"吗?

是否可以使用第三方插件和宝石?

And*_*all 4

是的,由于您使用的是RESTful路由,因此它们是您的基本 API。您还返回可由应用程序轻松使用的结构化 JSON 数据。

还有其他方法可以实现 Web 服务 API(例如SOAP),但这是一种很好且正确的方法。

由于它是一个 Web 服务 API,因此连接到正确的 URL 并解析响应是客户端的方法。不过,如果您需要访问许多不同的资源,那么创建一种灵活的方式来构建请求 URL 可能是个好主意。