Odpowiedzi:
Domyślnie używasz curl bez wyraźnego określenia, której metody żądania użyć. Jeśli po prostu przekażesz adres URL HTTP, taki jak curl http://example.com
on, użyje GET. Jeśli użyjesz -d
lub -F
curl użyje POST, -I
spowoduje HEAD i -T
sprawi, że będzie to PUT.
Jeśli z jakiegoś powodu nie jesteś zadowolony z tych domyślnych opcji, które robi dla Ciebie curl, możesz zastąpić te metody żądań, określając -X [WHATEVER]
. W ten sposób możesz na przykład wysłać DELETE, wykonując curl -X DELETE [URL]
.
Nie ma zatem sensu robić tego, curl -X GET [URL]
co i tak byłoby używane GET. W tym samym duchu jest to bezcelowe, curl -X POST -d data [URL]...
ale możesz zrobić zabawne i nieco rzadkie żądanie, które wysyła treść żądania w żądaniu GET z czymś w rodzaju curl -X GET -d data [URL]
.
curl -GET
(używając pojedynczego myślnika) jest po prostu niewłaściwe w tym celu. To odpowiednik określające -G
, -E
a -T
opcje i że zrobi coś zupełnie innego.
Dostępna jest również opcja zawijania, --get
aby nie mylić spraw z żadnym. Jest to długa forma -G, która jest używana do konwersji danych określonych za pomocą -d
na żądanie GET zamiast POST.
(Następnie użyłem tutaj własnej odpowiedzi, aby wypełnić FAQ curl, aby to omówić .)
Nowoczesne wersje curl będą informować użytkowników o tym niepotrzebnym i potencjalnie szkodliwym użyciu -X, gdy włączony jest tryb szczegółowy ( -v
) - aby użytkownicy byli świadomi. Więcej wyjaśnień i motywacji w tym poście na blogu .
Możesz poprosić curl o przekonwertowanie zestawu -d
opcji i zamiast wysyłać je w treści żądania za pomocą POST, umieścić je na końcu ciągu zapytania adresu URL i wydać GET, używając opcji `-G. Lubię to:
curl -d name=daniel -d grumpy=yes -G https://example.com/
Użycie -X [WHATEVER]
tylko zmienia ciąg metody żądania używany w żądaniu HTTP. Łatwiej to zrozumieć na podstawie dwóch przykładów - jednego z -X [WHATEVER]
i jednego bez - oraz powiązanych nagłówków żądań HTTP dla każdego z nich:
# curl -XPANTS -o nul -v http://neverssl.com/
* Connected to neverssl.com (13.224.86.126) port 80 (#0)
> PANTS / HTTP/1.1
> Host: neverssl.com
> User-Agent: curl/7.42.0
> Accept: */*
# curl -o nul -v http://neverssl.com/
* Connected to neverssl.com (13.33.50.167) port 80 (#0)
> GET / HTTP/1.1
> Host: neverssl.com
> User-Agent: curl/7.42.0
> Accept: */*