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"]) # octocatParameter 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 stringPOST 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
- Permintaan HTTP dengan requests dan httpx
- Mengurai HTML dengan BeautifulSoup
- Membangun Spider Scrapy
- Menangani JavaScript dan Tindakan Anti-Scraping