0Pricing
Python Academy · Ders

requests ve httpx ile HTTP İstekleri

Web sayfalarını alın; yönlendirmeleri, oturumları ve üst bilgileri ele alın.

requests ve httpx ile HTTP İstekleri, CoddyKit'te ücretsiz bir Python Academy 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, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

requests Kitaplığı

requests, standart eşzamanlı HTTP kitaplığıdır. Basit, güvenilirliği kanıtlanmış ve betikler ile tek seferlik API çağrıları için idealdir.

# pip install requests
import requests

r = requests.get("https://api.github.com/users/octocat")
print(r.status_code)   # 200
print(r.json()["login"])   # octocat

Sorgu Parametreleri ve Üst Bilgiler

Sorgu parametrelerini params=, özel üst bilgileri ise headers= ile gönderin.

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

JSON Gövdeli POST

JSON verilerini json= ile gönderin; requests, Content-Type: application/json üst bilgisini otomatik olarak ayarlar.

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())

Oturum Nesneleri

Birden çok istek arasında üst bilgileri, çerezleri ve bağlantı havuzunu korumak için requests.Session kullanın.

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()

Zaman Aşımı ve Yeniden Denemeler

Her zaman bir zaman aşımı belirleyin. Otomatik yeniden denemeler için bir HTTPAdapter ile urllib3.util.retry.Retry kullanın.

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)

Hataları Ele Alma

4xx/5xx yanıtlarında bir HTTPError oluşturmak için r.raise_for_status() çağrısını kullanın.

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")

Dosya İndirme

Her şeyi belleğe yüklemekten kaçınmak için büyük dosya indirmelerini stream=True ile akış hâlinde gerçekleştirin.

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 — Modern Asenkron HTTP

httpx, requests ile aynı API'ye sahiptir ancak asenkron çalışmayı destekler. FastAPI uygulamaları ve asenkron iş akışları için kullanın.

# 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())

httpx AsyncClient

Bağlantı havuzundan yararlanmak için istekler arasında tek bir AsyncClient paylaşın. Bunu başlangıçta oluşturup kapanışta kapatın.

import httpx, asyncio

CLIENT: httpx.AsyncClient | None = None

async def startup():
    global CLIENT
    CLIENT = httpx.AsyncClient(timeout=10)

async def shutdown():
    await CLIENT.aclose()

Kimlik Doğrulama Yardımcıları

Hem requests hem de httpx kimlik doğrulama yardımcılarını destekler: Temel kimlik doğrulama için auth=(user, pass), belirteç tabanlı kimlik doğrulama için özel Auth sınıfları kullanılır.

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")

Testlerde HTTP'yi Taklit Etme

Testlerde HTTP çağrılarını taklit etmek için respx (httpx için) veya responses (requests için) kullanın.

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

Hızlı Kontrol

response.raise_for_status() ne yapar?

Özet

Eşzamanlı HTTP için requests kullanın. Asenkron çalışmanız gerektiğinde httpx kullanın. Her zaman zaman aşımı belirleyin, bağlantıları yeniden kullanmak için oturumlardan yararlanın, raise_for_status() çağrısını kullanın ve büyük indirmeleri akış hâlinde gerçekleştirin. Testlerde HTTP'yi respx veya responses ile taklit edin.

Sıkça Sorulan Sorular

“requests ve httpx ile HTTP İstekleri” dersi ücretsiz mi?

Evet — “requests ve httpx ile HTTP İstekleri” 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 Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“requests ve httpx ile HTTP İstekleri” dersinde ne öğreneceğim?

Web sayfalarını alın; yönlendirmeleri, oturumları ve üst bilgileri ele alın. Python Academy 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.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, 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.

“requests ve httpx ile HTTP İstekleri” 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 Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy 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

  1. requests ve httpx ile HTTP İstekleri
  2. BeautifulSoup ile HTML Ayrıştırma
  3. Scrapy Örümceği Oluşturma
  4. JavaScript ve Tarama Karşıtı Önlemleri Ele Alma
← Python Academy Sayfasına Dön