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:
| Methode | Zweck | Beispiel |
|---|---|---|
| GET | Daten abrufen | Wettervorhersage holen, Nutzer auflisten |
| POST | Daten senden/erstellen | Task erstellen, Formular abschicken |
| PUT | Daten aktualisieren | Profil ändern, Einstellungen updaten |
| DELETE | Daten löschen | Eintrag 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-Typ | Wie es funktioniert | requests-Code |
|---|---|---|
| API Key (Header) | Key im Request-Header | headers={"X-API-Key": key} |
| Bearer Token | OAuth-Style Token | headers={"Authorization": f"Bearer {token}"} |
| API Key (Query) | Key in URL-Parametern | params={"api_key": key} |
| Basic Auth | Benutzername + Passwort | auth=("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 einretry_after-Feld oder einenRetry-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
| Fehler | Status-Code | Dein Skript sollte… |
|---|---|---|
| Rate Limited | 429 | Warten und erneut versuchen (Retry-After-Header prüfen) |
| Nicht autorisiert | 401 | API-Key prüfen, klaren Fehler ausgeben |
| Nicht gefunden | 404 | Loggen und diese Ressource überspringen |
| Server-Fehler | 500-503 | Mit Backoff erneut versuchen (temporäres Problem) |
| Timeout | — | Mit 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
Erst das Quiz oben abschließen
Lektion abgeschlossen!