Curl oferuje szereg różnych wywołań metod http, które są poprzedzone znakiem X, ale oferuje również te same metody bez. Próbowałem obu i nie potrafię zrozumieć różnicy. Czy ktoś może mi szybko wyjaśnić, czym różnią się te dwie operacje?
źródło
Curl oferuje szereg różnych wywołań metod http, które są poprzedzone znakiem X, ale oferuje również te same metody bez. Próbowałem obu i nie potrafię zrozumieć różnicy. Czy ktoś może mi szybko wyjaśnić, czym różnią się te dwie operacje?
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/
-X [twoja metoda]
X pozwala zastąpić domyślne „Get”
** poprawione małe litery
x
na wielkieX
źródło
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:źródło