04 June 2015

前言

这几天,在做一个前端的项目。其需要向后台API请求。所以考虑需要使用一个HTTP的 client 。找到这样的几个客户端: Nestful, RestClient。

实现

使用 nestful 的实现

# encoding: UTF-8
class Base < Nestful::Resource
  endpoint "#{APISetting.host}#{APISetting.version}"
end

#encoding utf-8
class TestsResource < Base
  path 'users'

  # POST http://api.shop.sit.facloud.com/api/v1/users/sign_in.json
  def self.login(params)
    options = {
      login: params[:name],
      password: params[:password]
    }    
    sign_in_url = "#{self.url}/sign_in.json"
    Rails.logger.info "sign_in = #{sign_in_url}"
    begin
      post( URI.parse(sign_in_url) , options).decoded
    rescue Exception => e
      puts e.message
      puts e.backtrace.inspect
    end
  end
end

使用 RestCLient 的实现:

#encoding utf-8
require 'rest-client'
class UsersResource 
  USER_LOGIN_URL = "#{APISetting.host}#{APISetting.version}/users"
  def self.login(params)
    options = {
     login: params[:name],
     password: params[:password]
    }
    sign_in_url =  "#{USER_LOGIN_URL}/sign_in.json"
    Rails.logger.info "sign_in = #{sign_in_url}"
    begin
      JSON.parse RestClient.post(sign_in_url, options)
      # post("sign_in.json", name: options[:name], password: options[:password]).decoded
    rescue Exception => e
      puts e.message
      puts e.backtrace.inspect
    end
  end
end

RestClient 只依赖 URL ,提供一些其他的功能。

后记

有空总结一下。




傲娇的使用Disqus