私は、異なるフィルタリング基準をカスケードするために、同じパラメーターの名前を複数回送信することを強制する API に反対しています。したがって、API GET 呼び出しのサンプルは次のようになります。
GET http://api.site.com/search?a=b1&a=b2&a=b3&a=c2
私はRESTアダプターにFaradayを使用しています.FaradayはURLパラメーターをハッシュとして受け取ります(したがって、一意のキーがあります)。これは、次のようなことはできないことを意味します。
response = Faraday.new({
url: 'http://api.site.com/search'
params: { a: 'b1', a: 'b2', a: 'b3', a: 'c2' } # => nay
}).get
リクエストが送信される直前にURLをハッキングしようとしました:
connection = Faraday.new(url: 'http://api.site.com/search')
url = connection.url_prefix.to_s
full_url = "#{ url }?a=b1&a=b2&a=b3&a=c2"
response = connection.get( full_url )
これは機能しませんでした - 応答をデバッグすると、API サーバーに送信された実際の URL は次のようになります。
GET http://api.site.com/search?a[]=b1&a[]=b2&a[]=b3&a[]=c2
API を変更する方法はありません。ファラデーで作業を続け、これをエレガントな方法で解決する方法はありますか? ありがとう。