code garden Code Garden (Beta)
Zurück zum Blog

REST APIs verstehen: Von GET-Request bis Production-Ready Backend

2026-02-13 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.