我正在使用 Ruby on Rails 3,并尝试实现 API 以从 Web 服务检索帐户信息。也就是说,我想连接到具有 Account 类的 Web 服务并从show
在 URI 处路由的操作http://<site_name>/accounts/1
.
此时,在web服务中accounts_controller.rb
我有的文件:
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
现在我需要一些关于连接到网络服务的建议。在客户端应用程序中,我应该有一个 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"]
但是,上面的代码是实现 API 的“方式”吗?
是否建议使用第三方插件和 gems?
是的,既然你正在使用RESTful http://en.wikipedia.org/wiki/Representational_State_Transfer#RESTful_web_services路线,它们是你的基本 API。您还返回可由应用程序轻松使用的结构化 JSON 数据。
还有其他方法可以实现 Web 服务 API(例如SOAP http://en.wikipedia.org/wiki/SOAP),但这是一个好的、正确的方法。
由于它是一个 Web 服务 API,因此连接到正确的 URL 并解析响应是客户端的方法。不过,如果您需要访问许多不同的资源,那么创建一种灵活的方式来构建请求 URL 可能是个好主意。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)