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"]) # octocatAbfrageparameter 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 stringPOST 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
- HTTP-Anfragen mit requests und httpx
- HTML mit BeautifulSoup parsen
- Einen Scrapy-Spider erstellen
- JavaScript und Maßnahmen gegen Scraping