Lektion 5 12 Min.

API-Integration

Verbinde Python-Skripte mit REST-APIs — Authentifizierung, Paginierung, Fehlerbehandlung und wiederverwendbare API-Wrapper mit KI-Unterstützung.

🔄 Kurzer Rückblick: In der letzten Lektion hast du Web Scraping gelernt — Daten aus HTML-Seiten extrahieren. APIs sind die strukturierte, zuverlässige Alternative: Statt HTML zu parsen, bekommst du saubere JSON-Daten direkt vom Dienst.

APIs sind das Rückgrat moderner Automatisierung. Statt eine Wetter-Website zu scrapen, ruf die Wetter-API auf. Statt dein Projektmanagement-Tool zu screen-scrapen, nutze seine API. APIs liefern strukturierte Daten, stabile Schnittstellen und explizite Erlaubnis.

REST-API-Grundlagen

pip install requests python-dotenv

Die vier HTTP-Methoden die du brauchst:

MethodeZweckBeispiel
GETDaten abrufenWettervorhersage holen, Nutzer auflisten
POSTDaten senden/erstellenTask erstellen, Formular abschicken
PUTDaten aktualisierenProfil ändern, Einstellungen updaten
DELETEDaten löschenEintrag löschen, Abo kündigen

Core requests-Muster:

import requests

# GET mit Parametern
response = requests.get(
    "https://api.example.com/data",
    params={"city": "Berlin", "units": "metric"},
    headers={"Authorization": f"Bearer {api_key}"}
)
data = response.json()

# POST mit JSON-Body
response = requests.post(
    "https://api.example.com/items",
    json={"name": "Neuer Eintrag", "quantity": 5},
    headers={"Authorization": f"Bearer {api_key}"}
)

Skript 1: API-Daten-Fetcher

KI-Prompt:

Schreib ein Python-Skript das Daten von einer REST-API abruft: (1) API-Key aus Umgebungsvariablen lesen mit python-dotenv, (2) GET-Requests mit ordentlichen Headers und Parametern, (3) Häufige HTTP-Fehler behandeln: 401, 403, 404, 429, 500, (4) JSON-Response parsen und als CSV speichern, (5) Retry-Logik: fehlgeschlagene Requests bis 3× mit exponentiellem Backoff (1s, 2s, 4s). Inklusive .env.example mit benötigten Variablen.

Authentifizierungsmuster

Auth-TypWie es funktioniertrequests-Code
API Key (Header)Key im Request-Headerheaders={"X-API-Key": key}
Bearer TokenOAuth-Style Tokenheaders={"Authorization": f"Bearer {token}"}
API Key (Query)Key in URL-Parameternparams={"api_key": key}
Basic AuthBenutzername + Passwortauth=("username", "password")

Umgebungsvariablen-Sicherheit

.env-Datei erstellen (in .gitignore hinzufügen!):

WEATHER_API_KEY=dein-key-hier
GITHUB_TOKEN=ghp_xxxxxxxxxxxx

.env.example erstellen (committen — zeigt benötigte Variablen ohne Werte):

WEATHER_API_KEY=
GITHUB_TOKEN=

Im Skript laden:

from dotenv import load_dotenv
import os

load_dotenv()
api_key = os.environ.get("WEATHER_API_KEY")
if not api_key:
    raise ValueError("WEATHER_API_KEY nicht in .env gesetzt")

Quick Check: Eine API gibt diesen Fehler zurück: {"error": "rate_limit_exceeded", "retry_after": 30}. Was sollte dein Skript tun? (Antwort: Die angegebenen 30 Sekunden warten, dann erneut versuchen. Viele APIs liefern ein retry_after-Feld oder einen Retry-After-HTTP-Header, der dir sagt, wie lange du warten sollst. Deine Fehlerbehandlung sollte diesen Wert prüfen und nutzen statt eines festen Backoffs.)

Fehlerbehandlung für API-Skripte

FehlerStatus-CodeDein Skript sollte…
Rate Limited429Warten und erneut versuchen (Retry-After-Header prüfen)
Nicht autorisiert401API-Key prüfen, klaren Fehler ausgeben
Nicht gefunden404Loggen und diese Ressource überspringen
Server-Fehler500-503Mit Backoff erneut versuchen (temporäres Problem)
TimeoutMit längerem Timeout erneut versuchen

Key Takeaways

  • Nie API-Keys im Quellcode hardcoden — Umgebungsvariablen mit python-dotenv nutzen, .env-Datei (in .gitignore!) für deine Keys und eine .env.example (committen!) für benötigte Variablen; Bots scannen GitHub innerhalb von Minuten nach geleakten Keys
  • Intelligentes Rate Limiting implementieren: Request-Timestamps tracken für maximalen Durchsatz, exponentielles Backoff (1s, 2s, 4s) bei 429-Fehlern — jede API hat Limits und dein Skript muss sie automatisch respektieren
  • APIs sind zuverlässiger als Web Scraping: strukturierte JSON-Daten, versionierte Schnittstellen und explizite Erlaubnis — prüfe immer ob eine API existiert bevor du einen Scraper baust

Up Next

In der nächsten Lektion automatisierst du E-Mail und Benachrichtigungen — geplante Reports, Alerts und Statusupdates aus deinen Python-Skripten versenden.

Wissenscheck

1. Dein Skript ruft eine Wetter-API für 50 Städte ab. Die API erlaubt 60 Requests pro Minute. Bei 50 Requests klappt alles. Bei 70 bekommst du '429 Too Many Requests'. Wie löst du das?

2. Dein Skript speichert den API-Key direkt im Code: api_key = 'sk-abc123...'. Dein Kollege sagt, das sei ein Sicherheitsrisiko. Warum?

3. Eine API liefert Daten seitenweise: Jede Antwort hat 100 Einträge und einen 'next_page_token'. Du brauchst alle 5.000 Einträge. Wenn du das Skript 10 Minuten später nochmal ausführst, sind die Daten leicht anders (Einträge hinzugekommen/entfernt). Wie gehst du damit um?

Beantworte alle Fragen zum Prüfen

Erst das Quiz oben abschließen

Passende Skills