💪
URLエンコード要らずの"--data-urlencode"オプション
先日 + が意図せずスペースに変換されてしまう状況にハマったことで、初めてURLエンコードというものを知りました。
この時はリクエストを送るために Postman を利用していたのですが、curl コマンドにはこのURLエンコードを考えずにデータ入力をできるようにしてくれるオプションがあるらしい。
Postman vs cURL
例えば、パスワードをリセットするリクエストを送るとします。
Postman の場合

上記のように、
user+test@gmail.com 内の + を %2B に置き換える必要がある。
さもなくば、
user+test@gmail.com => user test@gmail.com
のように変換されてしまう。
cRUL の場合
with --data
curl -v -X PUT http://localhost:3000/reset_password --data "email=user%2Btest@gmail.com&password=test123"
--data(-d)の場合は、Postman と同様の入力値。
with --data-urlencode
curl -v -X PUT http://localhost:3000/reset_password --data-urlencode "email=user+test@gmail.com" -d "password=test123"
--data-urlencode の場合は、user+test@gmail.com をそのまま含ませることができる。他にも存在URLエンコードの可能性を気にすることなくデータ入力ができる。
シンボルを多く含むパラメータには cURL が無難
cURL のめちゃめちゃ種類の多いコマンドに苦手意識があって、Postman を使ってきましたが、こうしてみると cURL の方が応用がきいて使いやすいかも。
おまけ: 他のシンボルの対応表
Discussion