Header HTTP adalah pasangan nilai kunci yang memungkinkan Anda menyampaikan informasi tambahan dalam permintaan. Misalnya, header dapat menentukan informasi seperti tipe MIME, token autentikasi pengguna, dan lain-lain
Pada artikel ini, kita akan mempelajari cara mengirimkan header Content-Type dalam permintaan Post menggunakan library permintaan Python
Apa itu Header Tipe Konten?
Header Content-Type memungkinkan Anda menentukan jenis media dari sumber daya yang diberikan. Ini menimpa pengkodean tipe konten sebelumnya. Perlu diingat bahwa browser mungkin mengabaikan tajuk Content-Type saat parameter lain ditetapkan
Anda dapat mempelajari lebih lanjut tentang informasi Content-Type Header pada sumber daya di bawah ini
https. // pengembang. mozilla. org/en-US/docs/Web/HTTP/Headers/Content-Type
Contoh
Kode berikut menunjukkan contoh pengiriman data JSON dalam permintaan pos dan menyetel header Content-Type
impor permintaan
URL = 'https. //google. com/'
tajuk = {'Tipe-Konten'< . : 'aplikasi/json;}
tubuh = {
'nama pengguna' . 'linuxhint',
'sandi' . 'pasword'
}
resp = permintaan. poskan( url = URL , headers=headers, json=body)
cetak( resp. json())
Di atas mengilustrasikan cara mengirim data JSON menggunakan permintaan POST. Kami juga mendemonstrasikan cara menyetel nilai Content-Type dalam permintaan POST
Kesimpulan
Dalam artikel singkat ini, kita membahas cara menyetel header Content-Type dalam permintaan POST menggunakan permintaan. fungsi pos()
Permintaan POST adalah jenis metode HTTP tertentu yang digunakan saat kami mengirim data ke layanan di web. Kami menggunakannya di situs web yang menggunakan formulir - saat kami masuk, saat kami mengirim pesan atau memposting gambar. Aplikasi juga menggunakan permintaan POST untuk berinteraksi dengan layanan lain untuk mengirim data dengan JSON sebagai format data umum untuk pertukaran
Pustaka Requests_ adalah salah satu pustaka klien HTTP paling populer untuk Python. Saat ini memiliki lebih dari 45 ribu bintang di Github, dengan unduhan di PyPI sebesar 115 juta per bulan. Itu membuat pengiriman permintaan POST jauh lebih sederhana secara terprogram daripada harus mengirim data melalui browser tanpa kepala. Dengan browser tanpa kepala, kami perlu menulis skrip untuk menavigasi ke suatu situs, berpindah antar bidang, mengisi setiap bidang dengan data yang diinginkan sebelum akhirnya mengirimkan data. Dengan mengirimkan permintaan POST, kami langsung melompat ke langkah pengiriman akhir. Permintaan juga merupakan perpustakaan yang jauh lebih kecil daripada browser yang menghasilkan kinerja dan penggunaan memori yang lebih baik
Pada artikel ini kita akan membahas cara membuat permintaan POST menggunakan Permintaan dan bagaimana hal itu dapat membuat prosesnya lebih sederhana bagi kita
Membangun Permintaan POST JSON dengan Permintaan
Sebagai contoh, mari kita mulai dengan membuat permintaan JSON POST dengan cara yang sulit. Jangan khawatir Permintaan akan menyederhanakan ini untuk kami nanti. Kami menggunakan httpbin. org, yang mengembalikan respons JSON yang merinci konten yang dikirim
1. Setel Metode Permintaan ke POST
Permintaan memiliki desain berbasis kata kerja HTTP yang sangat sederhana, artinya untuk mendapatkan respons, kami menyebutnya itu. metode post() yang menyediakan URI kita sebagai argumen. Ini juga menyediakan metode serupa untuk permintaan GET, PUT dan PATCH
import requests r = requests.post("//httpbin.org/post")
2. Atur data POST
Untuk benar-benar mengirim beberapa data, kami memberikan argumen data. Secara default, data dikirim menggunakan formulir HTML seperti yang akan kami dapatkan dengan mengirimkan formulir apa pun di web. Permintaan menyetel tipe konten ke 'application/x-www-form-urlencoded', jadi tidak perlu menyetel header apa pun
import requests import json r = requests.post("//httpbin.org/post", data={"key": "value"}, ) _
Memeriksa respons dari httpbin. org, kita dapat melihat apa yang dikirim sebagai data formulir di bawah kunci "form".
>>> r.text '{\n "args": {}, \n "data": "", \n "files": {}, \n "form": {\n "key": "value"\n }, \n "headers": {\n "Accept": "*/*", \n "Accept-Encoding": "gzip, deflate", \n "Content-Length": "9", \n "Content-Type": "application/x-www-form-urlencoded", \n "Host": "httpbin.org", \n "User-Agent": "python-requests/2.25.1", \n "X-Amzn-Trace-Id": "Root=1-60df1a04-0384d3ce7d9ac00b5855064b"\n }, \n "json": null, \n "origin": "**.***.**.***", \n "url": "//httpbin.org/post"\n}\n'
Jika kami ingin mengirim JSON, kami dapat menyediakan string berformat JSON. Dalam contoh kami, kami menggunakan modul import requests import json r = requests.post("//httpbin.org/post", data={"key": "value"}, ) _0 untuk mengonversi kamus menjadi string berformat JSON yang siap dikirim
import requests import json r = requests.post("//httpbin.org/post", data=json.dumps({"key": "value"}), ) _
3. Tetapkan Header POST
Contoh JSON kami tidak akan berfungsi seperti sekarang. Dengan banyak layanan, kemungkinan besar kita akan mendapatkan kode status HTTP 400 (Permintaan Buruk). Untuk mencegahnya, kami juga perlu memberi tahu layanan yang kami panggil bahwa data kami adalah JSON sehingga dapat ditangani dengan benar. Untuk melakukannya, kami menetapkan 'Content-Type' ke 'application/json' di header permintaan
import requests import json r = requests.post( "//httpbin.org/post", data=json.dumps({"key": "value"}), headers={"Content-Type": "application/json"}, )
4. POST Data JSON
Jika menurut Anda contoh JSON kami sejauh ini terlihat agak rumit - Anda benar sekali. Permintaan membuatnya sangat mudah untuk mengurangi semua ini menjadi panggilan yang jauh lebih sederhana. Kami hanya dapat memberikan argumen 'json' dengan data kami. Permintaan akan menyetel tajuk kami dengan benar dan menyandikan string berformat JSON untuk kami secara otomatis
import requests r = requests.post('//httpbin.org/post', json={'key':'value'}) _
Membaca Tanggapan JSON
Dengan memeriksa respons dari layanan kami, kami dapat melihat bahwa data yang dikembalikan juga berupa string berformat JSON. Ini hanya teks, jadi kita perlu menguraikannya sendiri untuk menggunakannya dalam skrip Python kita
>>> r.text '{\n "args": {}, \n "data": "{\\"key\\": \\"value\\"}", \n "files": {}, \n "form": {}, \n "headers": {\n "Accept": "*/*", \n "Accept-Encoding": "gzip, deflate", \n "Content-Length": "16", \n "Content-Type": "application/json", \n "Host": "httpbin.org", \n "User-Agent": "python-requests/2.25.1", \n "X-Amzn-Trace-Id": "Root=1-60df0aaa-3105fc35436042571335fa22"\n }, \n "json": {\n "key": "value"\n }, \n "origin": "**.***.**.***", \n "url": "//httpbin.org/post"\n}\n'
Sebagai alternatif, jika kita ingin mengakses respons sebagai objek JSON, kita juga dapat menggunakan Requests built in JSON decoder dengan memanggil. json() pada objek respons
>>> r.json() {'args': {}, 'data': '{"key": "value"}', 'files': {}, 'form': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Content-Length': '16', 'Content-Type': 'application/json', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.25.1', 'X-Amzn-Trace-Id': 'Root=1-60deee08-4e9c76b6457826d5001b76fa'}, 'json': {'key': 'value'}, 'origin': '**.***.**.***', 'url': '//httpbin.org/post'} _
Membuat permintaan POST dalam Sesi
Sebagai contoh terakhir, mari masuk ke Berita Peretas menggunakan Permintaan dan kirimkan beberapa data formulir untuk masuk dalam kombinasi dengan objek import requests import json r = requests.post("//httpbin.org/post", data={"key": "value"}, ) 1. Cookie apa pun yang kami terima akan disimpan di objek, dan akan digunakan kembali nanti. get() panggilan ke sesi
Sebagai contoh kami, kami akan mencari teks tanggapan dari halaman berita untuk mengonfirmasi apakah kami diperlihatkan tautan logout yang menunjukkan bahwa kami disajikan halaman login
import requests session = requests.Session() r = session.post("//news.ycombinator.com/login", data={ "acct": "username", "pw": "***not-telling***" }) r = session.get("//news.ycombinator.com/news") logout_pos = r.text.find("logout") print(r.text[logout_pos-20:logout_pos+20]) # <a id='logout' href="logout
Besar. Tautan kami ada di respons yang menunjukkan kami masuk. Kami sekarang dapat terus berinteraksi dengan situs menggunakan objek sesi melalui Permintaan
Kesimpulan
Anda telah melihat betapa sederhananya Permintaan untuk memposting data ke situs atau layanan dan bagaimana kami dapat mengurangi banyak kode umum dalam aplikasi kami dengan menggunakannya. Desain sederhana ini tentu berkontribusi pada kesuksesannya di komunitas Python, membuatnya menjadi favorit para pengembang. Sebelum Anda meraih browser tanpa kepala yang lengkap untuk mengirim data Anda, Anda harus mempertimbangkan untuk menggunakan Permintaan
Anda akan sering membutuhkan proxy untuk proyek pengikisan web Anda, jangan ragu untuk membaca artikel ini tentang cara menggunakan proxy dengan Permintaan Python
Ian adalah pengembang lepas dengan hasrat untuk solusi sederhana. Dia telah menulis kode untuk mendukung survei, saluran pipa studio, dan memegang gelar PhD dalam komputasi terdistribusi.