コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

RubyのFaradayで送信するURLはURIエンコードを勝手にかけてくれる

表題の通りネタ

環境

faraday (0.15.4)

実演

下記の用にクライアントクラスを作る

client = Faraday.new do |faraday|
  faraday.response :logger #ログが見れる用に
  faraday.adapter Faraday.default_adapter # デフォルトアダプタ指定
end

まずは普通のパラメータでリクエス

client.get {|req| req.url "https://example.com?a=b" }

そうするとままGETリクエストをなげているのがわかる

I, [2019-06-12T23:57:05.830884 #41948]  INFO -- request: GET https://example.com?a=b
D, [2019-06-12T23:57:05.830941 #41948] DEBUG -- request: User-Agent: "Faraday v0.15.4"
I, [2019-06-12T23:57:06.308756 #41948]  INFO -- response: Status 200
D, [2019-06-12T23:57:06.308828 #41948] DEBUG -- response: accept-ranges: "bytes"

次にURLにエンコードが必要な文字列がある場合、今回は % を入れてみる

client.get {|req| req.url "https://example.com?a=%%%" }

すると勝手にURIエンコードをかけて送付してくれる。

I, [2019-06-12T23:57:50.739439 #41948]  INFO -- request: GET https://example.com?a=%25%25%25
D, [2019-06-12T23:57:50.739516 #41948] DEBUG -- request: User-Agent: "Faraday v0.15.4"
I, [2019-06-12T23:57:51.091595 #41948]  INFO -- response: Status 200
D, [2019-06-12T23:57:51.091719 #41948] DEBUG -- response: accept-ranges: "bytes"

参考リンク