Próbuję wysłać DELETE
żądanie z parametrem adresu URL za pomocą CURL. Robię:
curl -H application/x-www-form-urlencoded -X DELETE http://localhost:5000/locations` -d 'id=3'
Jednak serwer nie widzi parametru id = 3. Próbowałem użyć jakiejś aplikacji GUI i kiedy przekazuję adres URL jako:, http://localhost:5000/locations?id=3
działa. Naprawdę wolałbym używać CURL niż tej aplikacji GUI. Czy ktoś może wskazać, co robię źle?
GET
. ChcęDELETE
i nieGET
i staram się przestrzegać odpowiednich standardów projektowania REST, więc używam DELETE, a nie GET podczas usuwania.Felipsmartins ma rację.
Warto wspomnieć, że dzieje się tak, ponieważ tak naprawdę nie można użyć opcji -d / - data, jeśli nie jest to żądanie POST. Ale nadal jest to możliwe, jeśli użyjesz opcji -G.
Co oznacza, że możesz to zrobić:
Tutaj jest to trochę głupie, ale kiedy jesteś w linii poleceń i masz wiele parametrów, jest o wiele ładniej.
Mówię to, ponieważ polecenia cURL są zwykle dość długie, dlatego warto umieścić je w więcej niż jednej linii, która ucieka przed podziałem linii.
Jest to oczywiście o wiele wygodniejsze, jeśli używasz zsh. Mam na myśli, kiedy musisz ponownie edytować poprzednie polecenie, ponieważ zsh pozwala ci przechodzić linia po linii. (tylko mówię)
Mam nadzieję, że to pomoże.
źródło
--data-urlencode
dodaje dane do adresu URL bez wyjątków, ale teraz trzeba je połączyć z,--get
aby faktycznie działało.