2012-11-14 16 views
92

Sto tentando di inviare una richiesta DELETE con un parametro url utilizzando CURL. Io sto facendo:Parametri URL riga di comando CURL

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

Tuttavia, il server non è vedere il parametro id = 3. Ho provato ad utilizzare alcune applicazioni GUI e quando passo l'URL come: http://localhost:5000/locations?id=3, funziona. Preferirei usare CURL piuttosto che questa applicazione GUI. Qualcuno può per favore indicare cosa sto facendo male?

risposta

149

intestazione "application/x-www-form-urlencoded", perché? Provalo:

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

o

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

Ha funzionato. Ho appena realizzato che l'URL deve essere tra virgolette per accettare parametri. Quel tipo MIME è per un URL con parametri e questo è quello che usa l'applicazione GUI. Inoltre, non voglio fare 'GET'. Voglio 'DELETE' e non' GET' e sto cercando di seguire i giusti standard di progettazione REST, quindi sto usando DELETE e non GET quando lo elimino. – darksky

+1

Nel mio caso funziona solo con virgolette doppie, con virgolette singole in arricciatura: (1) Protocollo http non supportato o disabilitato in libcurl Ma con "" le quotazioni funzionano bene. –

73

Felipsmartins è corretto.

Vale la pena ricordare che è perché non si può realmente usare l'opzione -d/- data se questa non è una richiesta POST. Ma questo è ancora possibile se usi l'opzione -G.

Il che significa che si può fare questo:

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

Qui è un po 'sciocco, ma quando si sono sulla riga di comando e si dispone di un sacco di parametri, è molto più ordinato.

Dico questo perché i comandi di cURL sono solitamente piuttosto lunghi, quindi vale la pena farlo su più di una linea che sfugge alle interruzioni di riga.

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

Questo è ovviamente molto più comodo se si utilizza zsh. Voglio dire quando devi modificare di nuovo il comando precedente perché zsh ti permette di andare riga per riga. (solo dicendo)

Spero che aiuti.

+6

Salvavita! Grazie uomo! Ho uno script in cui voglio usare --data-urlencode su un GET. Ciò lo ha reso così che non devo manualmente codificare url i miei parametri. Grazie! –

+0

Stai implicando che -X DELETE -G è davvero una richiesta POST? – huggie

-6

Se il parametro è un numero, allora si può anche fare questo:

curl -X DELETE localhost:5000/locations/3

Dove '3' è il tuo parametro.

+6

Dipende totalmente dall'implementazione del server. – Tim

Problemi correlati