Faraday - Ruby的HTTP 客户端


MIT
跨平台
Ruby

软件简介

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