DELETE using CURL with encoded URL
-
05-07-2021 - |
Вопрос
I’m trying to make a request using CURL like this:
curl -X DELETE "https://myhost/context/path/users/OXYugGKg207g5uN/07V"
where OXYugGKg207g5uN/07V
is a hash, so I suppose that I need to encode before do this request.
I have tried curl -X DELETE --data-urlenconded "https://myhost/context/path/users/OXYugGKg207g5uN/07V"
Some ideas?
Решение
If really OXYugGKg207g5uN/07V
is the hash then you need to encode that, not the whole url. You can use an encoding function available inside the environment you use cURL in.
Другие советы
Since you are in a bash environment, you could encode the hash OXYugGKg207g5uN/07V
before passing it to curl.
A straight-forward approach would be to use its byte representation %4f%58%59%75%67%47%4b%67%32%30%37%67%35%75%4e%2f%30%37%56
To get that, call:
echo -ne "OXYugGKg207g5uN/07V" | xxd -plain | tr -d '\n' | sed 's/\(..\)/%\1/g'
It will give you: %4f%58%59%75%67%47%4b%67%32%30%37%67%35%75%4e%2f%30%37%56
The complete one-liner including curl in bash/zsh/sh/… would look like this:
curl -X DELETE "https://myhost/context/path/users/$(echo -ne "OXYugGKg207g5uN/07V" | xxd -plain | tr -d '\n' | sed 's/\(..\)/%\1/g')"
and is equivalent to
curl -X DELETE "https://myhost/context/path/users/%4f%58%59%75%67%47%4b%67%32%30%37%67%35%75%4e%2f%30%37%56"
This solution is not very pretty, but it works.
I hope you find this helpful.