1

私はファラデーが初めてで、URL パラメータの配列を渡す方法を学ぼうとしています。私のコードは次のようになります。

require 'faraday'

conn = Faraday.new(:url => 'http://foo.com:8888') do |faraday|
  faraday.request :url_encoded
  faraday.response :logger
  faraday.adapter Faraday.default_adapter
end

response = conn.get '/api/endpoint', { :bar => ['baz', 'qux'] }
response.body    

デバッグすると、URL が次のようにエンコードされていることがわかります。

INFO -- : get http://foo.com:8888/api/endpoint?bar[]=baz&bar[]=qux

の代わりにhttp://foo.com:8888/api/endpoint?bar=baz&bar=qux[]パラメータの配列を渡すときに、ファラデーを使用せずに URL をエンコードするにはどうすればよいですか?

4

2 に答える 2

2

コメントできないので、これを言います:上記の答えは私にとってはうまくいき、賛成しましたが、これが私の具体的な例です(呼び出しを FlatParamsEncoder に移動する必要がありました。最初は間違った方法でした:

#Gemfile
gem 'faraday', '~> 0.9.0.rc5'

#lib/api_wrapper/faraday_adapter.rb
def patch
  connection.patch do |req|
    req.options.params_encoder = Faraday::FlatParamsEncoder
    req.headers['Content-Type'] = 'application/json'
    req.url "/api/v1/#{end_point}", @request.params
  end
end

def connection
  faraday_client = Faraday.new(:url => base_url) do |faraday|
    faraday.response :logger if Rails.env.development?
    faraday.adapter Faraday.default_adapter # make requests with Net::HTTP
  end
  faraday_client.basic_auth(username, password)
  faraday_client
end
于 2014-04-01T15:17:26.200 に答える