Ruby的HTTP 客戶端:Faraday
Faraday 是一個Ruby 的HTTP 客戶端開發庫,提供了一個通用的接口,支持如下適配器:
- Net::HTTP
- Excon
- Typhoeus
- Patron
- EventMachine
示例代碼:
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
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!