Permintaan HTTP dengan requests dan httpx
Dapatkan halaman web serta kendalikan ubah hala, sesi dan pengepala.
Permintaan HTTP dengan requests dan httpx ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.
Pustaka requests
requests ialah pustaka HTTP segerak standard. Ringkas, teruji rapi dan sesuai untuk skrip serta panggilan API sekali-sekala.
# pip install requests
import requests
r = requests.get("https://api.github.com/users/octocat")
print(r.status_code) # 200
print(r.json()["login"]) # octocatParameter Pertanyaan dan Pengepala
Hantar parameter pertanyaan dengan params= dan pengepala tersuai dengan headers=.
import requests
r = requests.get(
"https://api.example.com/search",
params={"q": "python", "page": 1},
headers={"Authorization": "Bearer my-token"}
)
print(r.url) # full URL with query stringPOST dengan Badan JSON
Hantar data JSON dengan json= — requests menetapkan Content-Type: application/json secara automatik.
import requests
r = requests.post(
"https://api.example.com/users",
json={"name": "Alice", "email": "alice@example.com"}
)
print(r.status_code) # 201
print(r.json())Objek Sesi
Gunakan requests.Session untuk mengekalkan pengepala, kuki dan pengumpulan sambungan merentas beberapa permintaan.
import requests
with requests.Session() as s:
s.headers.update({"Authorization": "Bearer token"})
users = s.get("https://api.example.com/users").json()
profile = s.get("https://api.example.com/me").json()Tamat Masa dan Percubaan Semula
Sentiasa tetapkan tamat masa. Gunakan urllib3.util.retry.Retry dengan HTTPAdapter untuk percubaan semula automatik.
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
s = requests.Session()
retry = Retry(total=3, backoff_factor=1)
s.mount("https://", HTTPAdapter(max_retries=retry))
r = s.get("https://api.example.com/data", timeout=5)Mengendalikan Ralat
Panggil r.raise_for_status() untuk mencetuskan HTTPError bagi respons 4xx/5xx.
import requests
try:
r = requests.get("https://api.example.com/data")
r.raise_for_status()
data = r.json()
except requests.HTTPError as e:
print(f"HTTP error: {e.response.status_code}")
except requests.ConnectionError:
print("Network unreachable")Memuat Turun Fail
Strim muat turun fail besar dengan stream=True supaya segala-galanya tidak perlu dimuatkan ke dalam memori.
import requests
with requests.get("https://example.com/large.zip", stream=True) as r:
r.raise_for_status()
with open("large.zip", "wb") as f:
for chunk in r.iter_content(chunk_size=8192):
f.write(chunk)httpx — HTTP Tak Segerak Moden
httpx mempunyai API yang sama seperti requests tetapi menyokong operasi tak segerak. Gunakannya untuk aplikasi FastAPI dan aliran kerja tak segerak.
# pip install httpx
import httpx
# Synchronous:
r = httpx.get("https://httpbin.org/get")
print(r.json())
# Asynchronous:
import asyncio
async def main():
async with httpx.AsyncClient() as c:
r = await c.get("https://httpbin.org/get")
print(r.json())
asyncio.run(main())AsyncClient httpx
Kongsi satu AsyncClient merentas permintaan untuk pengumpulan sambungan. Ciptakannya semasa permulaan dan tutup semasa penutupan.
import httpx, asyncio
CLIENT: httpx.AsyncClient | None = None
async def startup():
global CLIENT
CLIENT = httpx.AsyncClient(timeout=10)
async def shutdown():
await CLIENT.aclose()Pembantu Pengesahan
requests dan httpx kedua-duanya menyokong pembantu pengesahan: auth=(user, pass) untuk pengesahan Asas, dan kelas Auth tersuai untuk pengesahan token.
import httpx
class BearerAuth(httpx.Auth):
def __init__(self, token): self.token = token
def auth_flow(self, request):
request.headers["Authorization"] = f"Bearer {self.token}"
yield request
async with httpx.AsyncClient(auth=BearerAuth("my-token")) as c:
r = await c.get("https://api.example.com/me")Meniru HTTP dalam Ujian
Gunakan respx (untuk httpx) atau responses (untuk requests) untuk meniru panggilan HTTP dalam ujian.
# pip install respx
import httpx, respx, asyncio
@respx.mock
async def test_api():
respx.get("https://api.example.com/users").mock(
return_value=httpx.Response(200, json=[{"id":1}])
)
async with httpx.AsyncClient() as c:
r = await c.get("https://api.example.com/users")
assert r.json() == [{"id": 1}]Semakan Pantas
Apakah yang dilakukan oleh response.raise_for_status()?
Ringkasan
Gunakan requests untuk HTTP segerak. Gunakan httpx apabila operasi tak segerak diperlukan. Sentiasa tetapkan tamat masa, gunakan sesi untuk menggunakan semula sambungan, panggil raise_for_status() dan strim muat turun besar. Tiru HTTP dalam ujian menggunakan respx atau responses.
Pelajari Python dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 76
- Pelajaran
- 320
Soalan Lazim
Adakah pelajaran “Permintaan HTTP dengan requests dan httpx” percuma?
Ya — teks penuh “Permintaan HTTP dengan requests dan httpx” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Permintaan HTTP dengan requests dan httpx”?
Dapatkan halaman web serta kendalikan ubah hala, sesi dan pengepala. Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Python Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Permintaan HTTP dengan requests dan httpx” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?
Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Permintaan HTTP dengan requests dan httpx
- Menghuraikan HTML dengan BeautifulSoup
- Membina Spider Scrapy
- Mengendalikan JavaScript dan Langkah Antipengikisan