Python Academy · Pelajaran

Permintaan HTTP dengan requests dan httpx

Dapatkan halaman web serta kendalikan ubah hala, sesi dan pengepala.

Pelajaran 1 daripada 413 langkah

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"])   # octocat

Parameter 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 string

POST 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.

Percuma untuk bermula

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

  1. Permintaan HTTP dengan requests dan httpx
  2. Menghuraikan HTML dengan BeautifulSoup
  3. Membina Spider Scrapy
  4. Mengendalikan JavaScript dan Langkah Antipengikisan
← Kembali ke Python Academy