Как urlencode url params с помощью curl POST, но не urlencode данных тела? - PullRequest
0 голосов
/ 14 сентября 2018

При выполнении POST-вызова curl с чем-то вроде ... | curl -XPOST --data @- https://example.com/ могу ли я также url-кодировать некоторые параметры url в командной строке (используя сам curl, а не функции bash) без необходимости кодировать их самостоятельно и поставить их в аргументе url для curl?

Итак, я хочу, чтобы тело POST не было urlencoded, но параметры URL должны быть url, закодированными в той же команде curl.

Так, например:

echo '{"username":"a","password": [1,2]}' | curl --header "Content-Type: application/json" --request POST -d@- --data-urlencode "filter=." http://localhost:8080

Не похоже, что я хочу, и у меня есть постфикс моего https://localhost:8080/ url с ?filter..., который я бы предпочел избегать в случаях, когда параметр нуждается в большом кодировании.

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете использовать --data-urlencode параметр:

... | curl -s -X POST --data @- --data-urlencode "filter=ab&123" <url>

Согласно man curl:

--data-urlencode <data>
(HTTP) Это отправляет данные, аналогично другим опциям -d, --data, за исключением того, что это выполняет кодирование URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...