0Pricing
Python Academy · Lektion

HTTP-Anfragen mit requests und httpx

Rufen Sie Webseiten ab und behandeln Sie Weiterleitungen, Sitzungen und Header.

HTTP-Anfragen mit requests und httpx ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

requests-Bibliothek

requests ist die Standardbibliothek für synchrone HTTP-Aufrufe. Sie ist einfach, bewährt und ideal für Skripte und einzelne API-Aufrufe.

# pip install requests
import requests

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

Abfrageparameter und Header

Übergeben Sie Abfrageparameter mit params= und benutzerdefinierte Header mit 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 mit JSON-Body

Senden Sie JSON-Daten mit json= – requests setzt Content-Type: application/json automatisch.

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

Session-Objekte

Verwenden Sie eine requests.Session, um Header, Cookies und Verbindungspooling über mehrere Anfragen hinweg beizubehalten.

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

Timeouts und Wiederholungen

Setzen Sie immer ein Timeout. Verwenden Sie urllib3.util.retry.Retry mit einem HTTPAdapter für automatische Wiederholungsversuche.

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)

Fehlerbehandlung

Rufen Sie r.raise_for_status() auf, um bei 4xx-/5xx-Antworten einen HTTPError auszulösen.

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

Dateien herunterladen

Streamen Sie große Datei-Downloads mit stream=True, damit nicht alles in den Speicher geladen wird.

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 – modernes asynchrones HTTP

httpx verfügt über dieselbe API wie requests, unterstützt aber asynchrone Aufrufe. Verwenden Sie es für FastAPI-Anwendungen und asynchrone Workflows.

# 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

Verwenden Sie einen einzelnen AsyncClient für mehrere Anfragen, um Verbindungspooling zu nutzen. Erstellen Sie ihn beim Startup und schließen Sie ihn beim 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()

Authentifizierungshelfer

Sowohl requests als auch httpx unterstützen Authentifizierungshelfer: auth=(user, pass) für Basic-Authentifizierung und benutzerdefinierte Auth-Klassen für Token-Authentifizierung.

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

HTTP-Aufrufe in Tests mocken

Verwenden Sie respx (für httpx) oder responses (für requests), um HTTP-Aufrufe in Tests zu mocken.

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

Schnelltest

Was bewirkt response.raise_for_status()?

Zusammenfassung

Verwenden Sie requests für synchrones HTTP. Verwenden Sie httpx, wenn asynchrone Aufrufe erforderlich sind. Setzen Sie immer Timeouts, verwenden Sie Sessions zur Wiederverwendung von Verbindungen, rufen Sie raise_for_status() auf und streamen Sie große Downloads. Mocken Sie HTTP-Aufrufe in Tests mit respx oder responses.

Häufig gestellte Fragen

Ist die Lektion „HTTP-Anfragen mit requests und httpx“ kostenlos?

Ja — der vollständige Text von „HTTP-Anfragen mit requests und httpx“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „HTTP-Anfragen mit requests und httpx“?

Rufen Sie Webseiten ab und behandeln Sie Weiterleitungen, Sitzungen und Header. Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „HTTP-Anfragen mit requests und httpx“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. HTTP-Anfragen mit requests und httpx
  2. HTML mit BeautifulSoup parsen
  3. Einen Scrapy-Spider erstellen
  4. JavaScript und Maßnahmen gegen Scraping
← Zurück zu Python Academy