Ruby的HTTP 客户端:Faraday

jopen 6年前

Faraday 是一个Ruby 的HTTP 客户端开发库,提供了一个通用的接口,支持如下适配器:

示例代码:

conn = Faraday.new(:url => 'http://sushi.com') do |faraday|    faraday.request  :url_encoded             # form-encode POST params    faraday.response :logger                  # log requests to STDOUT    faraday.adapter  Faraday.default_adapter  # make requests with Net::HTTP  end    # set proxy with string  conn.options.proxy = "http://user:password@example.org/"    # set proxy with hash  conn.options.proxy = { :uri => 'http://user:passwordexample.org' }    # specify proxy user/pass  conn.options.proxy = { :uri => 'http://user:pass.org',    :user => 'user',    :password => 'pass' }    ## GET ##    response = conn.get '/nigiri/sake.json'     # GET http://sushi.com/nigiri/sake.json  response.body    conn.get '/nigiri', { :name => 'Maguro' }   # GET /nigiri?name=Maguro    conn.get do |req|                           # GET http://sushi.com/search?page=2&limit=100    req.url '/search', :page => 2    req.params['limit'] = 100  end    ## POST ##    conn.post '/nigiri', { :name => 'Maguro' }  # POST "name=maguro" to http://sushi.com/nigiri    # post payload as JSON instead of "www-form-urlencoded" encoding:  conn.post do |req|    req.url '/nigiri'    req.headers['Content-Type'] = 'application/json'    req.body = '{ "name": "Unagi" }'  end    ## Per-request options ##    conn.get do |req|    req.url '/search'    req.options.timeout = 5           # open/read timeout in seconds    req.options.open_timeout = 2      # connection open timeout in seconds      # set proxy with string    req.options.proxy = "http://user:password@example.org/"      # set proxy with hash    req.options.proxy = { :uri => 'http://user:passwordexample.org' }      # specify proxy user/pass    req.options.proxy = { :uri => 'http://user:pass.org',      :user => 'user',      :password => 'pass' }  end

项目主页:http://www.open-open.com/lib/view/home/1369726559237