Permintaan posting python dengan header dan contoh tubuh

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("https://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("https://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": "https://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("https://httpbin.org/post", 
    data={"key": "value"},
)
_0 untuk mengonversi kamus menjadi string berformat JSON yang siap dikirim

import requests
import json

r = requests.post("https://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(
    "https://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('https://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": "https://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': 'http://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("https://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("https://news.ycombinator.com/login", data={
    "acct": "username",
    "pw": "***not-telling***"
})

r = session.get("https://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

Permintaan posting python dengan header dan contoh tubuh

Ian Wootten

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.

Bagaimana Anda mengirimkan header dalam permintaan POST dengan Python?

Untuk meneruskan header HTTP ke permintaan POST menggunakan pustaka permintaan Python, Anda dapat menggunakan parameter headers= di. fungsi post() . Parameter headers= menerima kamus Python dari pasangan kunci-nilai, di mana kunci mewakili jenis tajuk dan nilainya adalah nilai tajuk.

Bisakah kita mengirim header dalam permintaan POST?

Untuk mengirim permintaan Axios POST dengan header, Anda perlu menggunakan opsi header . Dengan aksioma. post() , parameter pertama adalah URL, parameter ke-2 adalah badan permintaan, dan parameter ke-3 adalah opsi. Misalnya, di bawah ini adalah cara Anda menyetel header Content-Type pada permintaan HTTP POST.

Bagaimana cara menambahkan tajuk ke permintaan POST?

Halaman Konten muncul. Klik tombol Buat tajuk. .
Di bidang Nama, masukkan nama aturan tajuk Anda (misalnya, Tajuk saya )
Dari menu Type, pilih Request, dan dari menu Action, pilih Set
Di bidang Tujuan, masukkan nama tajuk yang terpengaruh oleh tindakan yang dipilih

Bagaimana Anda meneruskan tajuk dalam metode posting?

Saat Anda menggunakan pustaka Axios dan untuk mengirimkan tajuk khusus, Anda perlu membuat tajuk sebagai objek dengan nama kunci 'tajuk'. Kunci 'tajuk' harus berisi objek, ini dia Jenis-Konten dan Otorisasi