FaradayRuby的HTTP 客户端
Faraday 是一个Ruby 的HTTP 客户端开发库,提供了一个通用的接口,支持如下适配器:
Net::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评论
