Aracılar İçin HTTP İstemcileri: httpx ve requests
Eşzamanlı ve eşzamansız HTTP istekleri, oturum yönetimi ve üst bilgiler.
Aracılar İçin HTTP İstemcileri: httpx ve requests, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.
Aracılar İçin HTTP İstemcileri Neden Önemlidir
Yapay zekâ aracıları çoğu zaman harici kaynaklardan veri almalıdır: API'ler, web siteleri ve hizmetler. Güvenilir bir HTTP istemcisi, her aracının araç setindeki temel araçlardan biridir.
Python'da iki popüler HTTP kitaplığı vardır: requests (eşzamanlı, basit) ve httpx (hem eşzamanlı hem asenkron çalışmayı destekler). Verimli aracılar oluştururken her birini ne zaman kullanacağınızı anlamanız çok önemlidir.
requests ile Temel GET İsteği
requests kitaplığı basit HTTP çağrılarını kolaylaştırır. Bir kaynağı almak ve yanıtı incelemek için requests.get(url) kullanın.
Yanıt gövdesini kullanmadan önce her zaman durum kodunu kontrol edin; böylece sessiz başarısızlıkları önleyebilirsiniz.
import requests
url = 'https://api.example.com/data'
response = requests.get(url)
print(response.status_code) # 200
print(response.text) # raw string body
print(response.json()) # parsed JSON dictÜst Bilgiler ve Zaman Aşımı Ekleme
Çoğu API kimlik doğrulama üst bilgileri gerektirir. headers= parametresi, bir üst bilgi sözlüğü geçirmenizi sağlar. Aracınızın yavaş bir sunucuda süresiz beklemesini önlemek için her zaman bir timeout= belirleyin.
import requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Accept': 'application/json'
}
response = requests.get(
'https://api.example.com/items',
headers=headers,
timeout=10 # seconds
)
data = response.json()
print(data)raise_for_status() — Hatalarda Hemen Başarısız Olma
response.raise_for_status(), 4xx ve 5xx durum kodları için bir HTTPError oluşturur. Bu işlem olmadan 404 veya 500 yanıtı sessizce başarı olarak değerlendirilir.
Bu, aracılarda iyi bir uygulamadır: Aracının yeniden denemesi veya bir hata bildirmesi gerektiğini anlaması için hatayı açıkça ortaya çıkarın.
import requests
try:
response = requests.get('https://api.example.com/missing', timeout=10)
response.raise_for_status() # raises if status >= 400
data = response.json()
except requests.HTTPError as e:
print(f'HTTP error: {e}')
except requests.RequestException as e:
print(f'Network error: {e}')httpx'e Giriş
httpx, requests ile aynı API'ye sahip, ancak ek olarak asenkron çalışmayı destekleyen modern bir HTTP istemcisidir. Ayrıca varsayılan olarak zaman aşımı uyguladığı için üretim ortamındaki aracılar için daha güvenlidir.
Kitaplığı pip install httpx ile kurun. Eşzamanlı kullanım, requests kullanımına neredeyse tamamen benzer.
import httpx
response = httpx.get(
'https://api.example.com/data',
headers={'Authorization': 'Bearer YOUR_KEY'},
timeout=10.0
)
response.raise_for_status()
data = response.json()
print(data)httpx.AsyncClient ile Asenkron HTTP
Aracınız asenkron bir bağlamda çalıştığında (örneğin FastAPI veya asyncio ile), olay döngüsünü engellememek için httpx.AsyncClient kullanın. Bağlantının düzgün biçimde kapatılmasını sağlamak için bunu async with içinde kullanın.
import httpx
import asyncio
async def fetch_data(url: str) -> dict:
async with httpx.AsyncClient(timeout=10.0) as client:
response = await client.get(
url,
headers={'Authorization': 'Bearer YOUR_KEY'}
)
response.raise_for_status()
return response.json()
# result = asyncio.run(fetch_data('https://api.example.com/data'))Birden Çok Asenkron İsteği Eşzamanlı Gönderme
Asenkron HTTP'nin önemli bir avantajı, asyncio.gather() ile birden çok URL'yi aynı anda alabilmenizdir. Bu, yanıt vermeden önce birkaç uç noktadan veri alması gereken aracıları önemli ölçüde hızlandırabilir.
import httpx
import asyncio
async def fetch_all(urls: list) -> list:
async with httpx.AsyncClient(timeout=10.0) as client:
tasks = [client.get(url) for url in urls]
responses = await asyncio.gather(*tasks)
return [r.json() for r in responses]
urls = [
'https://api.example.com/item/1',
'https://api.example.com/item/2',
'https://api.example.com/item/3'
]
# results = asyncio.run(fetch_all(urls))Oturumları Yeniden Kullanma ve Bağlantı Havuzlama
Her istek için yeni bir HTTP bağlantısı oluşturmak yavaştır. Her iki kitaplık da bağlantı havuzlamayı destekler: requests.Session ve httpx.Client, TCP bağlantılarını yeniden kullanır ve istekler arasında üst bilgileri ile çerezleri paylaşır.
Bu, aynı API'ye çok sayıda çağrı yapan aracılar için özellikle kullanışlıdır.
import httpx
# Create once, reuse for many requests
client = httpx.Client(
base_url='https://api.example.com',
headers={'Authorization': 'Bearer YOUR_KEY'},
timeout=10.0
)
response1 = client.get('/users')
response2 = client.get('/items')
response3 = client.get('/orders')
client.close() # always close when doneJSON Gövdesiyle POST İstekleri Gönderme
Aracıların çoğu zaman yalnızca veri okuması değil, veri göndermesi de gerekir. Bir Python sözlüğünü otomatik olarak serileştirmek ve doğru Content-Type üst bilgisini ayarlamak için json= parametresini kullanın.
import httpx
payload = {
'query': 'latest AI news',
'max_results': 5,
'language': 'en'
}
response = httpx.post(
'https://api.example.com/search',
json=payload,
headers={'Authorization': 'Bearer YOUR_KEY'},
timeout=15.0
)
response.raise_for_status()
results = response.json()
print(results['items'])Yanıtı Ayrıştırma: text, json ve content
Yanıt nesnesinin üç temel gövde özelliği vardır:
.text— kodu çözülmüş dize (HTML, XML, düz metin).json()— JSON'ı Python sözlüğü veya listesine ayrıştırır.content— ham baytlar (görseller veya ikili dosyalar için)
API'nin içerik türüne göre uygun olanı kullanın.
import httpx
response = httpx.get('https://api.example.com/report', timeout=10.0)
# For JSON APIs
data = response.json() # dict or list
# For HTML or plain text
html = response.text # str
# For binary files
image_bytes = response.content # bytes
print(type(data), type(html), type(image_bytes))Hepsini Bir Araya Getirme: Bir Aracının HTTP Veri Getirme Aracı
Aşağıda, bir aracının araç olarak çağırabileceği eksiksiz ve yeniden kullanılabilir bir veri getirme işlevi verilmiştir. Hataları düzgün biçimde ele alır, isteği günlüğe kaydeder ve yapılandırılmış veri döndürür.
Bu desen, web'den veri getiren her araç için sağlam bir temel oluşturur.
import httpx
import logging
logger = logging.getLogger(__name__)
def agent_fetch(url: str, headers: dict = None) -> dict:
try:
response = httpx.get(
url,
headers=headers or {},
timeout=10.0
)
response.raise_for_status()
logger.info(f'Fetched {url} -> {response.status_code}')
return {'success': True, 'data': response.json()}
except httpx.HTTPStatusError as e:
return {'success': False, 'error': str(e)}
except httpx.RequestError as e:
return {'success': False, 'error': f'Network error: {e}'}Bilgi Kontrolü: HTTP İstemcileri
Aracılar için HTTP istemcilerini ne kadar anladığınızı sınayın.
Özet: Aracılar İçin HTTP İstemcileri
Bu derste aracılarınızı güvenilir HTTP veri getirme yetenekleriyle donatmayı öğrendiniz:
- Basit eşzamanlı veri getirme işlemleri için
requestskullanın - Engellemeyen asenkron istekler için
httpx.AsyncClientkullanın - Her zaman
timeout=belirleyin veraise_for_status()çağrısını yapın - Aynı sunucuya yapılan birden çok çağrı için oturumları/istemcileri yeniden kullanın
- Yanıt türüne göre
.json(),.textveya.contentkullanın
İyi yazılmış bir veri getirme aracı, aracınız ile web arasındaki geçittir.
Yapay zeka eğitmeniyle AI Agents öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 60
- Dersler
- 239
Sıkça Sorulan Sorular
“Aracılar İçin HTTP İstemcileri: httpx ve requests” dersi ücretsiz mi?
Evet — “Aracılar İçin HTTP İstemcileri: httpx ve requests” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.
“Aracılar İçin HTTP İstemcileri: httpx ve requests” dersinde ne öğreneceğim?
Eşzamanlı ve eşzamansız HTTP istekleri, oturum yönetimi ve üst bilgiler. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Agents öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Aracılar İçin HTTP İstemcileri: httpx ve requests” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Aracılar İçin HTTP İstemcileri: httpx ve requests
- BeautifulSoup ile HTML Ayrıştırma
- Sayfalandırma ve Dinamik İçeriği Ele Alma
- Ölçülü Veri Kazıma Uygulamaları