REST APIs verstehen: Von GET-Request bis Production-Ready Backend
APIs sind das Rueckgrat moderner Software. Dieser Guide fuehrt dich durch die Konzepte, Muster und Best Practices, die du brauchst, um echte Backends zu bauen.
Wenn du ein paar kleine Projekte gebaut hast, bist du wahrscheinlich an dem Punkt angekommen, an dem du willst, dass verschiedene Teile deiner Software miteinander reden. Ein Frontend, das Daten abruft. Eine mobile App, die sich mit einem Server synchronisiert. Zwei Services, die Informationen austauschen. Hier kommen APIs ins Spiel.
REST steht fuer Representational State Transfer. Es ist kein Protokoll und keine Bibliothek. Es ist ein Architekturstil, eine Reihe von Konventionen dafuer, wie Clients und Server ueber HTTP kommunizieren. Der Grund, warum REST zum dominanten Muster wurde, ist Einfachheit. Es nutzt Standard-HTTP-Methoden, die jeder Entwickler bereits versteht.
Die vier Kernmethoden
Die vier Methoden entsprechen vier grundlegenden Operationen:
- **GET** ruft Daten ab
- **POST** erstellt neue Daten
- **PUT** aktualisiert bestehende Daten
- **DELETE** entfernt Daten
Eine gut designte REST API organisiert Daten um Ressourcen herum. Eine Ressource ist ein Substantiv, kein Verb. Die URL identifiziert die Ressource, die HTTP-Methode definiert die Aktion:
text
GET /users → Alle User abrufen
GET /users/42 → User 42 abrufen
POST /users → Neuen User erstellen
PUT /users/42 → User 42 aktualisieren
DELETE /users/42 → User 42 loeschen
So sieht eine einfache API mit FastAPI aus:
python
from fastapi import FastAPI, HTTPException
app = FastAPI()
users = {}
@app.get("/users")
def get_users():
return list(users.values())
@app.get("/users/{user_id}")
def get_user(user_id: int):
if user_id not in users:
raise HTTPException(status_code=404, detail="User nicht gefunden")
return users[user_id]
@app.post("/users")
def create_user(name: str, email: str):
user_id = len(users) + 1
users[user_id] = {"id": user_id, "name": name, "email": email}
return users[user_id]
Statuscodes sind die Sprache zwischen Frontend und Backend
Statuscodes sind die Art, wie der Server dem Client mitteilt, was passiert ist:
- **200** Erfolg
- **201** Ressource erstellt
- **400** Fehlerhafte Anfrage vom Client
- **404** Ressource nicht gefunden
- **500** Server-Fehler
Diese Codes zu lernen ist nicht optional. Sie sind die gemeinsame Sprache zwischen Frontend und Backend.
Von Basics zu Production-Ready
Sobald du die Grundlagen verstehst, erfordert der Weg zur Production-Readiness ein paar weitere Schichten. Input-Validierung stellt sicher, dass eingehende Daten deinen Erwartungen entsprechen. Mit Pydantic in FastAPI sieht das so aus:
python
from pydantic import BaseModel, EmailStr
class UserCreate(BaseModel):
name: str
email: EmailStr
age: int
@app.post("/users", status_code=201)
def create_user(user: UserCreate):
# Pydantic validiert automatisch
# Falsche Daten → 422 Validation Error
new_user = {"id": len(users) + 1, **user.model_dump()}
users[new_user["id"]] = new_user
return new_user
Ein haeufiges Anfaenger-Muster ist, alle Logik direkt in Route Handler zu packen. Das funktioniert fuer kleine Projekte, wird aber schmerzhaft, wenn die Codebase waechst. Die Loesung ist die Trennung von Zustaendigkeiten. Route Handler parsen den Request. Service-Funktionen enthalten Geschaeftslogik. Datenbank-Funktionen kuemmern sich um Persistenz.
Der beste Weg, APIs zu lernen, ist eine zu bauen, die du tatsaechlich nutzt. Deploye sie irgendwo kostenlos wie Render oder Railway, konsumiere sie von einem einfachen Frontend aus, und du wirst REST auf einem praktischen Level verstehen, das kein Tutorial erreichen kann.