すげー当たり前だけど、Faradayがらみは application/json
の事例しかないので改めて書いてみる
環境
faraday (0.15.4)
考え方
POST リクエストは、ふつう HTML フォームを介して送信され、サーバーに変化をもたらします。この場合、
<form>
要素の enctype 属性もしくは、<input>
又は<button>
要素の formenctype 属性に適切な文字列を設定することでコンテンツタイプを選択します。 application/x-www-form-urlencoded: キーと値は、その間に '=' がある形でキーと値の組になり、 '&' で区切られてエンコードされます。キーや値の英数字以外の文字は、パーセントエンコーディングされます。このため、このタイプはバイナリデータを扱うのには向きません (代わりに multipart/form-data を使用してください) - POST - HTTP | MDN
なので普通に application/x-www-form-urlencoded
をcontent_typeに加えて、URLエンコードしたものを含めればいい
例
url = "https://example.com" params = {page: 10} Faraday.new.post do |req| req.headers["Content-Type"] = "application/x-www-form-urlencoded" req.url url # ActiveSupportの to_query を使って横着をしている req.body = params.to_query end
という形でやれば実現はできる