💪

URLエンコード要らずの"--data-urlencode"オプション

2021/07/15に公開

先日 + が意図せずスペースに変換されてしまう状況にハマったことで、初めてURLエンコードというものを知りました。

https://zenn.dev/swata_dev/articles/be9b0dfdc3c466

この時はリクエストを送るために 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 の方が応用がきいて使いやすいかも。

おまけ: 他のシンボルの対応表

https://www.seil.jp/doc/index.html#tool/url-encode.html

Discussion