Saya perlu mengunggah beberapa data ke server menggunakan HTTP PUT
dengan python. Dari bacaan singkat saya tentang urllib2 docs, ia hanya melakukan HTTP POST
. Apakah ada cara untuk melakukan HTTP PUT
dengan python?
220
Saya telah menggunakan berbagai libs HTTP python di masa lalu, dan saya telah memilih ' Permintaan ' sebagai favorit saya. Lib yang ada memiliki antarmuka yang cukup bisa digunakan, tetapi kode dapat berakhir menjadi beberapa baris terlalu lama untuk operasi sederhana. PUT dasar dalam permintaan terlihat seperti:
payload = {'username': 'bob', 'email': '[email protected]'}
>>> r = requests.put("http://somedomain.org/endpoint", data=payload)
Anda kemudian dapat memeriksa kode status respons dengan:
r.status_code
atau tanggapan dengan:
r.content
Permintaan memiliki banyak gula dan jalan pintas yang akan membuat hidup Anda lebih mudah.
json=payload
parameter jika Anda ingin data berada di tubuh.sumber
requests
perpustakaan sebagai gantinya.Httplib sepertinya merupakan pilihan yang lebih bersih.
sumber
Anda harus melihat pada modul httplib . Seharusnya Anda membiarkan permintaan HTTP apa pun yang Anda inginkan.
sumber
Saya perlu menyelesaikan masalah ini beberapa waktu lalu sehingga saya bisa bertindak sebagai klien untuk RESTful API. Saya memilih httplib2 karena memungkinkan saya mengirim PUT dan DELETE selain GET dan POST. Httplib2 bukan bagian dari perpustakaan standar tetapi Anda dapat dengan mudah mendapatkannya dari toko keju.
sumber
Anda dapat menggunakan perpustakaan permintaan, itu menyederhanakan banyak hal dibandingkan dengan mengambil pendekatan urllib2. Pertama instal dari pip:
Lebih lanjut tentang menginstal permintaan .
Kemudian atur permintaan put:
Lihat quickstart untuk perpustakaan permintaan . Saya pikir ini jauh lebih sederhana daripada urllib2 tetapi memang membutuhkan paket tambahan ini untuk diinstal dan diimpor.
sumber
Ini dibuat lebih baik di python3 dan didokumentasikan dalam dokumentasi stdlib
The
urllib.request.Request
kelas memperolehmethod=...
parameter dalam python3.Beberapa penggunaan sampel:
sumber
Saya juga merekomendasikan httplib2 oleh Joe Gregario. Saya menggunakan ini secara teratur, bukan httplib di lib standar.
sumber
Apakah Anda sudah melihat put.py ? Saya sudah menggunakannya di masa lalu. Anda juga dapat meretas permintaan Anda sendiri dengan urllib.
sumber
Anda tentu saja dapat memutar sendiri dengan perpustakaan standar yang ada di tingkat mana saja dari soket hingga tweaker urllib.
http://pycurl.sourceforge.net/
"PyCurl adalah antarmuka Python ke libcurl."
"libcurl adalah pustaka transfer URL sisi-klien gratis dan mudah digunakan, ... mendukung ... HTTP PUT"
"Kelemahan utama dengan PycURL adalah bahwa itu adalah lapisan yang relatif tipis di atas libcurl tanpa ada hierarki kelas Pythonic yang bagus. Ini berarti ia memiliki kurva belajar yang agak curam kecuali Anda sudah terbiasa dengan API C libcurl."
sumber
Jika Anda ingin tetap berada di perpustakaan standar, Anda dapat mensubklasifikasikan
urllib2.Request
:sumber
Cara yang lebih tepat untuk melakukan ini
requests
adalah:Ini menimbulkan pengecualian jika ada kesalahan dalam permintaan HTTP PUT.
sumber