0Pricing
Python Academy · Pelajaran

Permintaan HTTP dengan requests dan httpx

Ambil halaman web, tangani pengalihan, sesi, dan header.

Permintaan HTTP dengan requests dan httpx adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Pustaka requests

requests adalah pustaka HTTP sinkron standar. Sederhana, telah teruji dalam berbagai penggunaan, dan sangat cocok untuk skrip serta panggilan API satu kali.

# 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 Kueri dan Header

Teruskan parameter kueri dengan params= dan header khusus 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 Isi JSON

Kirim data JSON dengan json= — requests secara otomatis menetapkan Content-Type: application/json.

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 mempertahankan header, cookie, dan kumpulan koneksi di antara 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()

Batas Waktu dan Percobaan Ulang

Selalu tetapkan batas waktu. Gunakan urllib3.util.retry.Retry dengan HTTPAdapter untuk melakukan percobaan ulang secara otomatis.

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)

Menangani Kesalahan

Panggil r.raise_for_status() untuk memunculkan HTTPError pada 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")

Mengunduh Berkas

Alirkan unduhan berkas berukuran besar dengan stream=True agar seluruh isinya tidak dimuat ke 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 Asinkron Modern

httpx memiliki API yang sama seperti requests, tetapi mendukung operasi asinkron. Gunakan httpx untuk aplikasi FastAPI dan alur kerja asinkron.

# 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 dari httpx

Gunakan satu AsyncClient bersama di antara berbagai permintaan untuk memanfaatkan kumpulan koneksi. Buat saat startup dan tutup saat shutdown.

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 Autentikasi

Baik requests maupun httpx mendukung pembantu autentikasi: auth=(user, pass) untuk autentikasi Basic, serta kelas Auth khusus untuk autentikasi berbasis 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 Pengujian

Gunakan respx (untuk httpx) atau responses (untuk requests) untuk meniru panggilan HTTP dalam pengujian.

# 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}]

Pemeriksaan Singkat

Apa yang dilakukan oleh response.raise_for_status()?

Ringkasan

Gunakan requests untuk HTTP sinkron. Gunakan httpx saat operasi asinkron diperlukan. Selalu tetapkan batas waktu, gunakan sesi untuk menggunakan kembali koneksi, panggil raise_for_status(), dan alirkan unduhan berukuran besar. Tirukan HTTP dalam pengujian dengan respx atau responses.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Permintaan HTTP dengan requests dan httpx” gratis?

Ya — teks lengkap “Permintaan HTTP dengan requests dan httpx” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Permintaan HTTP dengan requests dan httpx”?

Ambil halaman web, tangani pengalihan, sesi, dan header. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Permintaan HTTP dengan requests dan httpx” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Permintaan HTTP dengan requests dan httpx
  2. Mengurai HTML dengan BeautifulSoup
  3. Membangun Spider Scrapy
  4. Menangani JavaScript dan Tindakan Anti-Scraping
← Kembali ke Python Academy