Ruby的HTTP 客戶端:Faraday

jopen 11年前發布 | 27K 次閱讀 Faraday 網絡工具包

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.baiduhome.net/lib/view/home/1369726559237

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!