Rumah >pembangunan bahagian belakang >Tutorial Python >Panduan untuk permintaan Python kaedah POST

Panduan untuk permintaan Python kaedah POST

Barbara Streisand
Barbara Streisandasal
2024-11-24 04:33:11408semak imbas

Guide to Python requests POST method

Pustaka permintaan Python ialah alat perpustakaan klien http yang berkuasa dan memudahkan komunikasi API, terutamanya untuk membuat permintaan POST. Sama ada anda sedang membina aplikasi yang berinteraksi dengan API jauh atau mengikis web, menguasai kaedah POST dengan permintaan ialah kemahiran asas untuk pembangunan web yang cekap.

Panduan ini menyediakan panduan menyeluruh menggunakan permintaan Python untuk membuat permintaan POST, kaedah penting untuk menghantar data ke pelayan. Kami akan merangkumi contoh, cabaran biasa dan amalan terbaik.

Bagi mereka yang baru menggunakan perpustakaan, anda boleh mulakan dengan memasangnya dengan permintaan pemasangan pip untuk diikuti bersama panduan ini.

Apakah Permintaan HTTP POST?

HTTP ialah tulang belakang komunikasi antara klien web (seperti penyemak imbas atau aplikasi) dan pelayan. Protokol ini menggunakan permintaan untuk menukar data dan mungkin terdapat pelbagai jenis kaedah:

  • DAPATKAN : Mendapatkan semula data daripada pelayan tanpa mengubahnya.
  • POST : Menghantar data ke pelayan, sesuai untuk:
    • Membuat rekod baharu (cth., akaun pengguna).
    • Menyerahkan borang atau input pengguna.
    • Mengirim fail atau data sensitif.
  • PUT : Mengemas kini sumber sedia ada, seperti mengubah suai profil pengguna.
  • PADAM : Mengalih keluar sumber yang ditentukan daripada pelayan.
  • PATCH : Mengemas kini sebahagian sumber sedia ada.
  • HEAD : Meminta hanya pengepala (maklumat meta) bagi respons tanpa kandungan.
  • PILIHAN : Semak kaedah HTTP mana yang disokong oleh pelayan.

Menggunakan permintaan POST dalam Python adalah penting untuk interaksi yang menghantar data ke pelayan dan mungkin terdapat banyak kes penggunaan untuk kaedah ini — mari kita lihat seterusnya.

Mengapa Menggunakan POST untuk Penyerahan Data?

Memahami masa untuk menggunakan POST berbanding kaedah HTTP lain adalah kunci dalam pembangunan web. Tidak seperti GET, yang menghantar data sebagai sebahagian daripada parameter URL terhad, POST menghantar data melalui badan permintaan. Ini membolehkan untuk menampung muatan yang lebih besar dan menyembunyikan data untuk keselamatan. Ini menjadikan kaedah POST sesuai untuk:

  • Mencipta rekod baharu : Menambah pengguna baharu, menyiarkan ulasan atau memuat naik dokumen.
  • Menyerahkan data borang : Apabila pengguna menyerahkan maklumat melalui borang hubungan, borang carian atau persediaan akaun.
  • Menghantar data sensitif : Tidak seperti GET, permintaan POST tidak memaparkan parameter dalam URL, memberikan lapisan keselamatan tambahan untuk maklumat sensitif.

Dengan pemahaman yang jelas tentang permintaan POST, mari kita terokai cara menghantarnya dalam Python menggunakan perpustakaan permintaan, meliputi format penting seperti JSON, data borang dan muat naik fail.

Menggunakan Permintaan Python untuk Menghantar Permintaan POST

Fungsi requests.post() ialah alat utama anda untuk menghantar permintaan POST dalam Python. Ia membenarkan penghantaran data yang boleh disesuaikan dan mudah dengan menyatakan URL, pengepala dan data itu sendiri. Jenis data yang paling biasa termasuk JSON, data borang atau data badan mentah, semuanya dikendalikan dengan mudah dengan kaedah POST permintaan python. Contohnya:

Permintaan python asas contoh siaran untuk menghantar permintaan POST:

import requests

response = requests.post('https://httpbin.dev/post', data={'key': 'value'})
# or start a persisten session:
session = requests.Session()
response = session.post('https://httpbin.dev/post', data={'key': 'value'})

# Check response content
print(response.status_code)
print(response.text)

Menggunakan requests.Session() membolehkan anda mengekalkan parameter tertentu (seperti kuki atau pengepala) merentas berbilang permintaan. Ini boleh menjadi penting apabila bekerja dengan permintaan POST kerana selalunya pelayan menjejaki keadaan klien semasa dan boleh mengembalikan data yang berbeza atau malah menyekat permintaan POST yang tiada pengepala atau kuki tertentu.

Jenis Kandungan Berbeza

Pengepala Jenis Kandungan HTTP adalah penting dalam permintaan POST kerana ia menentukan format data yang dihantar, yang memastikan pelayan boleh mentafsir permintaan dengan betul.

Sesetengah pelayan menyokong berbilang jenis kandungan POST, manakala yang lain memerlukan format khusus. Berikut ialah beberapa pengepala Jenis Kandungan biasa dan kegunaannya:

  • application/json mewakili format JSON yang biasa digunakan dalam komunikasi API.
  • application/x-www-form-urlencoded digunakan dalam penyerahan borang HTML, pengekodan data sebagai pasangan nilai kunci yang dikodkan URL.
  • data berbilang bahagian/borang direka untuk muat naik fail, menyokong kandungan bercampur seperti fail binari dan teks dalam satu permintaan.

Untuk menetapkan pengepala Jenis Kandungan dalam permintaan python gunakan parameter pengepala:

import requests
response = requests.post(
    'https://httpbin.dev/post', 
    headers={
        "Content-Type": "application/json",
    },
    data='{ "key": "value" }'
)

Dengan itu, mari kita lihat format data yang paling biasa digunakan dalam permintaan POST seterusnya.

Bagaimana untuk MENYATAKAN Data JSON

JSON (JavaScript Object Notation) ialah format yang biasa digunakan untuk komunikasi API kerana ia mudah distruktur dan dihuraikan. Ia tersedia secara asli dalam JavaScript dan dalam Python ia boleh dihantar dengan mudah ke kamus Python menggunakan modul json.

Menggunakan perpustakaan permintaan menghantar permintaan Python POST dengan data JSON adalah mudah. Gunakan parameter json dalam requests.post(), yang secara automatik mengendalikan pengekodan dan menetapkan pengepala Content-Type:

import requests

response = requests.post('https://httpbin.dev/post', data={'key': 'value'})
# or start a persisten session:
session = requests.Session()
response = session.post('https://httpbin.dev/post', data={'key': 'value'})

# Check response content
print(response.status_code)
print(response.text)

JSON ialah jenis data POST yang paling popular yang sering ditemui dalam senario seperti:

  • Pengesahan Pengguna : Apabila log masuk atau mendaftar, JSON digunakan untuk menghantar bukti kelayakan dan menerima token pengesahan.
  • Pendapatan dan Penyerahan Data : API untuk mengambil atau mengemas kini data, seperti cuaca, harga saham atau profil pengguna, biasanya bertindak balas dengan JSON dan selalunya memerlukan JSON untuk menghantar kemas kini.
  • Tetapan Konfigurasi : Banyak aplikasi menggunakan JSON untuk menghantar atau menerima butiran konfigurasi, membenarkan persediaan fleksibel berdasarkan pilihan pengguna atau keperluan sistem.
  • Penyerahan Borang dalam Apl Web : JSON juga biasa dalam aplikasi di mana borang atau input pengguna diserahkan, seperti tinjauan atau transaksi e-dagang.

Cara POS Data Borang

Data Borang digunakan apabila pengguna berinteraksi dengan medan input pada halaman web seperti:

  • Melakukan log masuk
  • Menyerahkan carian
  • Menyerahkan kandungan yang dijana pengguna seperti ulasan atau siaran

Data borang menghantar data dengan aplikasi pengepala Jenis Kandungan/x-www-form-urlencoded dan data pengekodan URL dalam format nilai kunci. Mari lihat contoh cara MENYATAKAN Data Borang dengan Permintaan Python untuk lebih memahami format ini:

import requests
response = requests.post(
    'https://httpbin.dev/post', 
    headers={
        "Content-Type": "application/json",
    },
    data='{ "key": "value" }'
)

Dalam contoh di atas, pengepala Jenis Kandungan ditetapkan secara automatik apabila kami menggunakan kamus python sebagai parameter data. Jika tidak, jika kita menghantar rentetan, kita perlu menetapkan pengepala Jenis Kandungan secara manual.

Menghantar Fail

Untuk menghantar fail menggunakan perpustakaan permintaan Python, parameter fail boleh digunakan. Parameter ini mengambil data bait dan secara automatik menetapkan pengepala Jenis Kandungan kepada berbilang bahagian/data bentuk. Ini berguna untuk memuat naik imej, dokumen atau kandungan media. Mari kita lihat beberapa contoh cara memuat naik fail menggunakan permintaan Python POST:

import requests

data = {'username': 'ziad', 'password': '1234'}
response = requests.post('https://httpbin.dev/api', json=data)

Di atas, kami melihat bahawa kami boleh menyediakan objek fail untuk permintaan menstrim data ke pelayan atau menyediakan data bait secara langsung.

Mengendalikan Respons POST dalam Python

Selepas membuat permintaan POST adalah amalan yang baik untuk mengesahkan respons untuk ralat atau nota meta. Untuk itu, objek Respons permintaan menyediakan atribut seperti status_code, header dan json() yang membantu menilai kejayaan atau mendiagnosis isu.

Untuk bermula, periksa response.status_code untuk mengesahkan sama ada permintaan POST berjaya dibuat dengan respons 200 OK. Jika tidak, rujuk jadual berguna ini di bawah.

Isu Sambutan POST Biasa dan Cara Menyelesaikannya

Status Code Issue Description Solution
400 Bad Request Incorrect data or syntax error The server couldn't process the request due to data format issues. Check the data format and headers (e.g., Content-Type) for correctness.
401 Unauthorized Missing or invalid authentication The request lacks valid authentication credentials. Include valid API keys or tokens in headers.
403 Forbidden Access denied The server refuses to authorize the request. Verify permissions and check the API documentation for access requirements.
404 Not Found Incorrect URL The server cannot find the requested endpoint. Double-check the endpoint URL for typos and ensure it’s valid.
405 Method Not Allowed Unsupported HTTP method The endpoint does not support the HTTP method used. Confirm the correct HTTP method is used by consulting the API documentation.
500 Internal Server Error Server-side error A generic error indicating an internal server issue. Retry the request; contact API support if the issue persists.
503 Service Unavailable Temporary overload/maintenance The server is temporarily unavailable due to high traffic or maintenance. Wait and retry later; consider implementing retry logic for critical applications.

Dengan memantau response.status_code dan menggabungkan logik pengendalian ralat, anda boleh memastikan interaksi yang mantap dan boleh dipercayai apabila membuat permintaan POST.

Berikut ialah contoh cara mengendalikan kod status respons:

import requests

response = requests.post('https://httpbin.dev/post', data={'key': 'value'})
# or start a persisten session:
session = requests.Session()
response = session.post('https://httpbin.dev/post', data={'key': 'value'})

# Check response content
print(response.status_code)
print(response.text)

Mengetahui cara mentafsir respons ini membantu menangani ralat dengan berkesan, memastikan pengalaman pengguna yang lancar dan menyelesaikan masalah dalam interaksi API.

Menyiarkan Data Mampat

Untuk mengoptimumkan lebar jalur pemindahan data, anda boleh POST data mampat Gzip atau Brotli. Berikut ialah contoh pemampatan gzip:

import requests
response = requests.post(
    'https://httpbin.dev/post', 
    headers={
        "Content-Type": "application/json",
    },
    data='{ "key": "value" }'
)

Untuk pemampatan Brotli pakej brotli boleh digunakan:

import requests

data = {'username': 'ziad', 'password': '1234'}
response = requests.post('https://httpbin.dev/api', json=data)

Menggunakan mampatan mengurangkan saiz muatan dengan ketara mengoptimumkan lebar jalur dan meningkatkan kelajuan permintaan. Ini terpakai terutamanya pada format seperti JSON yang boleh dimampatkan dengan baik.

Meningkatkan Prestasi dengan Permintaan POST Serentak

Permintaan POST, terutamanya yang melibatkan set data yang besar atau volum yang tinggi, boleh menjadi perlahan disebabkan oleh masa yang diperlukan untuk penghantaran data dan pemprosesan bahagian pelayan. Concurrency boleh mengurangkan kelewatan ini dengan membenarkan berbilang permintaan dijalankan serentak, mempercepatkan tugas seperti muat naik data pukal atau interaksi API.

Malangnya, perpustakaan permintaan Python tidak menyokong operasi tak segerak dengan asyncio, mengehadkan keupayaannya untuk mengendalikan banyak permintaan POST serentak dengan cekap.

Di sinilah httpx masuk, kerana ia menawarkan AsyncClient yang berintegrasi dengan lancar dengan gelung acara asyncio Python. Ini bermakna anda boleh menghantar banyak permintaan serentak tanpa menyekat, menjadikan httpx pilihan yang hebat untuk aplikasi berprestasi tinggi yang memerlukan sokongan async sebenar.

Sebagai alternatif, anda boleh menggunakan threading untuk mendayakan permintaan selari dalam permintaan Python. Berikut ialah contoh menggunakan pakej benang terbina dalam dengan permintaan:

form_data = {'search': 'product 1 & 2', 'count': 10}
response = requests.post(
    'https://httpbin.dev/post', 
    data=form_data,
)
# this will automatically add the Content-Type header
# and convert data from dictionary to URL encoded format
print(response.request.body)
'search=product+1+%26+2&count=10'
print(response.request.headers['Content-Type'])
'application/x-www-form-urlencoded'

# alternatively if we POST data as string
# we need to manually identify Content-Type
response = requests.post(
    'https://httpbin.dev/post', 
    data='search=product+1+%26+2&count=10'
    headers={
        "Content-Type": "application/x-www-form-urlencoded"
    }
)
print(response.request.body)
'search=product+1+%26+2&count=10'
print(response.request.headers['Content-Type'])
'application/x-www-form-urlencoded'

Dengan menggunakan threading, berbilang permintaan POST boleh dilancarkan secara selari, membolehkan setiap thread mengendalikan satu permintaan.

Anda boleh mengetahui lebih lanjut tentang Concurrency vs Parallelism dalam artikel khusus kami:

Keselarasan lwn Paralelisme
(https://scrapfly.io/blog/concurrency-vs-parallelism/)

Kuasakan dengan Scrapfly

Permintaan HTTP boleh menjadi sukar dan menjadi rumit dengan cepat dengan keperluan penyemak imbas tanpa kepala atau penyekatan pelanggan. Untuk itu, Scrapfly boleh membantu anda!

Guide to Python requests POST method

ScrapFly menyediakan API pengikisan, tangkapan skrin dan pengekstrakan web untuk pengumpulan data secara berskala.

  • Pintasan perlindungan anti-bot - mengikis halaman web tanpa menyekat!
  • Proksi kediaman berputar - halang alamat IP dan blok geografi.
  • Paparan JavaScript - mengikis halaman web dinamik melalui penyemak imbas awan.
  • Automasi penyemak imbas penuh - mengawal penyemak imbas untuk menatal, memasukkan dan mengklik pada objek.
  • Format penukaran - kikis sebagai HTML, JSON, Teks atau Markdown.
  • SDK Python dan Typescript, serta penyepaduan alat Scrapy dan tanpa kod.

Soalan Lazim

Untuk melengkapkan panduan ini, berikut ialah jawapan kepada beberapa soalan lazim tentang permintaan python POST.

Bagaimanakah saya boleh memasukkan pengepala tersuai dalam menggunakan permintaan Python?

Luluskan pengepala sebagai kamus menggunakan parameter pengepala. Harap maklum bahawa permintaan menjana beberapa pengepala secara automatik seperti Ejen Pengguna, Panjang Kandungan dan Jenis Kandungan, jadi berhati-hati apabila mengatasinya.

Apakah perbezaan antara data dan parameter json dalam permintaan Python?

data adalah untuk dikodkan borang (lalai) atau data mentah (apabila pengepala Jenis Kandungan ditindih). Walaupun json khusus untuk data format JSON dan secara automatik menetapkan Content-Type kepada aplikasi/json.

Adakah perpustakaan permintaan Python menyokong permintaan POST tak segerak?

Malangnya, perpustakaan permintaan tidak menyokong permintaan tak segerak. Walau bagaimanapun, perpustakaan httpx ialah alternatif yang menyediakan keupayaan async, menjadikannya sesuai untuk aplikasi yang memerlukan keselarasan.

Ringkasan

Dalam artikel ini kami telah melihat secara mendalam kaedah POST permintaan dalam Python dan mempelajari:

  • Bagaimanakah permintaan POST digunakan untuk menghantar data kepada pelayan pelbagai jenis seperti JSON, data borang dan muat naik fail.
  • Cara mengendalikan respons permintaan POST dan kod status biasa serta cara membetulkannya.
  • Cara meningkatkan prestasi dengan permintaan POST serentak menggunakan httpx atau threading untuk permintaan selari.
  • Cara memampatkan data untuk lebar jalur dan kelajuan yang dioptimumkan menggunakan modul gzip dan brotli.

Terdapat banyak lagi yang perlu dipelajari tentang permintaan Python dan permintaan POST, tetapi dengan panduan ini, anda dilengkapi dengan baik untuk mula membina aplikasi teguh dan pengikis web yang berinteraksi dengan API dan pelayan dengan berkesan.

Atas ialah kandungan terperinci Panduan untuk permintaan Python kaedah POST. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn