Bagaimana cara melakukan permintaan PUT dengan curl?

412

Bagaimana cara menguji metode TETAP (atau HAPUS) menggunakan curl?

John
sumber

Jawaban:

566

Menggunakan -Xbendera dengan kata kerja HTTP apa pun yang Anda inginkan:

curl -X PUT -d arg=val -d arg2=val2 localhost:8080

Contoh ini juga menggunakan -dbendera untuk memberikan argumen dengan permintaan PUT Anda.

theabraham
sumber
17
"man curl" on -X: "Biasanya Anda tidak memerlukan opsi ini. Segala macam permintaan GET, HEAD, POST dan PUT agak dipanggil dengan menggunakan opsi baris perintah khusus." Tetapi saya tidak dapat menemukan cara lain.
Martin C. Martin
44
Setahun kemudian, saya menemukan jalan! curl -T
Martin C. Martin
2
Karena jawaban Martin C. Martin juga berubah menjadi GET setelah pengalihan dari server, ini adalah jawaban yang lebih berguna menurut saya.
Martin
2
Untuk mencapai GETsetelah pengalihan, tambahkan parameter--location
Martin M
1
Curl 7.47 dan ini tidak akan berhasil untuk saya. jawaban theabraham selalu default untuk memposting perilaku. --get (atau -G) akan memaksa bidang -d (--data) menjadi parameter url dan berfungsi.
James Powell
101

Jawaban cepat:

Dalam satu baris, perintah curl adalah:

a) Jika mengirim data formulir:

curl -X PUT -H "Content-Type: multipart/form-data;" -F "key1=val1" "YOUR_URI"

b) Jika mengirim data mentah sebagai json:

curl -X PUT -H "Content-Type: application/json" -d '{"key1":"value"}' "YOUR_URI"

c) Jika mengirim file dengan permintaan POST:

curl -X POST "YOUR_URI" -F 'file=@/file-path.csv'

Solusi alternatif:

Anda dapat menggunakan aplikasi POSTMAN dari Toko Chrome untuk mendapatkan permintaan CURL yang setara. Ini sangat berguna saat menulis permintaan yang lebih rumit.

Untuk permintaan dengan format lain atau untuk klien yang berbeda seperti java, PHP, Anda dapat melihat POSTMAN / komentar di bawah ini.

POSTMAN untuk mendapatkan kode permintaan

Prateek
sumber
4
Tidak tahu mengapa ini telah diturunkan ... Saya salin di sini ide bagaimana untuk lulus JSON tubuh untuk curl PUT. Juga tukang pos adalah alat yang cukup luar biasa untuk mendapatkan kode ikal untuk pertanyaan yang lebih rumit :)
Mikael Lepistö
2
Terima kasih !! Bahkan saya tidak tahu mengapa tentang downvotes. Mungkin ada keengganan pengguna untuk mengadopsinya. Saya telah membuat respo semua apis REST saya untuk seluler di POSTMAN dan itu adalah tip produktivitas terbaik yang dapat saya sarankan kepada siapa pun yang bekerja dengan REST.
Prateek
Contoh dunia nyata di mana saya memberikan data dan parameter json di titik akhir; curl -X PUT -H "Tipe Konten: application / json" -d '{"jumlah": "999", "type": "car", "parent_id": "12345"}' localhost: 8080 / transactionervice / transaction / 2222
vikramvi
1
Harus menginstal peramban yang lengkap (jika seseorang tidak memiliki Chrome) dan ekstensi untuk itu mungkin berlebihan bagi beberapa orang. Setidaknya Anda bisa memberikan alternatif untuk peramban web lain yang lebih umum (instalasi default) seperti Firefox, di mana HttpRequester melakukan pekerjaan serupa.
rbaleksandar
5
Mungkin dibatalkan karena pertanyaannya adalah tentang ikal.
tuxayo
28

Contoh PUT mengikuti komentar Martin C. Martin:

curl -T filename.txt http://www.example.com/dir/

Dengan -T(sama dengan --upload-file) curl akan menggunakan PUT untuk HTTP.

Tor Klingberg
sumber
8
Sayangnya, -Tini bukan pengganti -X PUTjika Anda ingin menentukan parameter dengan -datau -F. -Tmengirimkan konten file melalui PUT. Untuk mencapai GETsetelah pengalihan, tambahkan parameter--location
Martin M
bagaimana jika filename.txt ada di server jauh?
bosari
7
curl -X PUT -d 'new_value' URL_PATH/key

dimana,

X - opsi yang akan digunakan untuk perintah permintaan

d - opsi yang akan digunakan untuk menempatkan data pada url jarak jauh

URL_PATH - url jarak jauh

new_value - nilai yang ingin kita masukkan ke kunci server

kalyani chaudhari
sumber
5

Saya terlambat ke utas ini, tetapi saya juga memiliki persyaratan yang serupa. Karena skrip saya menyusun permintaan untuk curl secara dinamis, saya menginginkan struktur perintah yang serupa di GET, POST, dan PUT.

Inilah yang bekerja untuk saya

Untuk permintaan PUT :

curl --request PUT --url http://localhost:8080/put --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'

Untuk permintaan POST :

curl --request POST --url http://localhost:8080/post --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'

Untuk permintaan GET :

curl --request GET --url 'http://localhost:8080/get?foo=bar&foz=baz'
sunitkatkar
sumber