CURL Komut Satırı URL Parametreleri


186

DELETECURL kullanarak bir url parametresi ile bir istek göndermeye çalışıyorum . Yapıyorum:

curl -H application/x-www-form-urlencoded -X DELETE http://localhost:5000/locations` -d 'id=3'

Ancak, sunucu id = 3 parametresini görmüyor. Bazı GUI uygulamaları kullanmayı denedim ve url'yi şu şekilde ilettiğimde: http://localhost:5000/locations?id=3çalışıyor. Gerçekten bu GUI uygulaması yerine CURL kullanmayı tercih ederim. Herkes ne yaptığımı gösterebilir mi?

Yanıtlar:


269

"application / x-www-form-urlencoded" başlığı neden? Denemek:

curl -X DELETE 'http://localhost:5000/locations?id=3'

veya

curl -X GET 'http://localhost:5000/locations?id=3'

30
İşe yaradı. URL'nin parametreleri kabul etmek için tırnak işaretleri arasında olması gerektiğini fark ettim. Bu MIME türü, GUI uygulamasının kullandığı parametrelerle ve bu URL içeren bir URL içindir. Ayrıca, yapmak istemiyorum GET. İstiyorum DELETEve istemiyorum GETve uygun REST tasarım standartlarını izlemeye çalışıyorum, bu yüzden silerken DELETE ve GET kullanmıyorum.
darksky

1
Benim durumumda bu sadece çift tırnak ile çalışır, curl diyor ki tek tırnak: (1) Protokol 'http libcurl desteklenmez veya devre dışı bırakılır Ama "" tırnak sadece iyi çalışır.
Jeff_Alieffson

150

Felipsmartins doğrudur.

Bir POST isteği değilse -d / - data seçeneğini gerçekten kullanamayacağınızdan bahsetmek gerekir. Ancak, -G seçeneğini kullanırsanız bu hala mümkündür.

Bu, bunu yapabileceğiniz anlamına gelir:

curl -X DELETE -G 'http://localhost:5000/locations' -d 'id=3'

Burada biraz aptalca ama komut satırında olduğunuzda ve çok fazla parametreniz olduğunda, çok daha düzenli.

Bunu söylüyorum çünkü cURL komutları genellikle oldukça uzun, bu yüzden satır sonlarından kaçan birden fazla satırda yapmaya değer.

curl -X DELETE -G \
'http://localhost:5000/locations' \
-d id=3 \
-d name=Mario \
-d surname=Bros

Açıkçası zsh kullanıyorsanız çok daha rahattır. Yani önceki komutu yeniden düzenlemeniz gerektiğinde zsh satır satır gitmenizi sağlar. (sadece söylüyorum)

Umarım yardımcı olur.


11
Hayat kurtarıcı! Teşekkürler dostum! Bir GET üzerinde --data-urlencode kullanmak istediğim bir komut dosyası var. Bu yüzden el ile benim parametreler url kodlamak zorunda kaldım. Teşekkürler!
Nathan Wallace

3
-X DELETE -G'nin gerçekten bir POST isteği olduğunu mu ima ediyorsunuz?
huggie

1
`-G, --get Mesaj verilerini URL'ye koy ve GET kullan 'Hayır, sadece yazı verilerini url'ye ekler, -X [yöntem] öncelik kazanır (kaynak: curl --help ve experience)
DownloadPizza

Bu nasıl bu kadar kıvrık olabilir? Bir --data-urlencode istisna olmaksızın verileri URL'ye eklediğini varsayabiliriz , ancak şimdi --getgerçekten çalışması için onu birleştirmeniz gerekir .
Jaakko
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.