其实ruby写api程序是非常简单,前提是api本身比较规范,而不是乱七八糟的。。
class ApiDemo
# 定义接口
API_QERUY = [
:userAdd # 用户资料添加
]
# 实现幽灵方法
def method_missing(method_name, *args, &block)
API_QERUY.each do |v|
if v.to_s == method_name.to_s
return api_request(v.to_s, args.first)
end
end
super
end
# 返回的结果解析,这里返回的是xml,所以使用Nokogiri这个gem来解析xml,非常方便。
def api_request(operation, argv)
query = ""
argv.each do |a|
query += "&" + a.first.to_s + "=" + a.last.to_s
end
uri = URI.escape("?version=1&type=xml&key="+api_key + query)
@doc = Nokogiri::HTML(open(api_url + operation + uri))
puts @doc.to_s if Rails.env.development? # 开发模式输出结果,便于调试
self
end
# 获取返回的code
def code
if @doc
@doc.at("code").content.to_i
end
end
# 判断返回结果是否成功
def success?
if @doc
self.code == 200
end
end
end
如何调用呢
ApiDemo.new.userAdd(username: 'moli').success?
如果要添加更多的api,则可以在
API_QERUY
中添加即可