Eine exzellent gestaltete REST-API ist das Rückgrat jeder erfolgreichen Webanwendung. Während gut durchdachte Schnittstellen die Integration für Entwickler zum Vergnügen machen, führen inkonsistente Endpunkte zu endlosen Support-Tickets und Fehlern. In diesem Guide erfahren Sie, wie Sie APIs nach Industriestandards entwerfen – inspiriert von Vorbildern wie Stripe, GitHub und Twilio.

1. Substantive statt Verben in URLs verwenden

REST ist ressourcenorientiert. Das bedeutet, dass URLs Dinge (Substantive) identifizieren sollten und keine Aktionen (Verben). Die Aktion selbst wird durch die HTTP-Methode (GET, POST, PUT, DELETE) definiert. Dies hält die API sauber und intuitiv.

Substantive vs. Verben in URLs
# ❌ Falsch: Verben in der URL (RPC-Stil)
GET  /getUser?id=42
POST /createUser
POST /deleteUser?id=42
POST /updateUserEmail

# ✅ Richtig: Ressourcenbasierte URLs (REST-Stil)
GET    /users/42          # Benutzer 42 abrufen
POST   /users             # Neuen Benutzer erstellen
DELETE /users/42          # Benutzer 42 löschen
PATCH  /users/42          # Bestimmte Felder von Benutzer 42 aktualisieren

2. Pluralformen für Kollektionen nutzen

Um Konsistenz zu gewährleisten, sollten Sie für Ressourcen-Endpunkte immer die Pluralform verwenden. Es wirkt natürlicher, wenn /users eine Liste von Benutzern zurückgibt und /users/42 auf ein spezifisches Element dieser Liste verweist:

Kollektionen und Ressourcen-Endpunkte
GET    /articles          # Alle Artikel auflisten
POST   /articles          # Einen neuen Artikel erstellen
GET    /articles/slug     # Einen spezifischen Artikel abrufen
PUT    /articles/slug     # Einen Artikel komplett ersetzen
PATCH  /articles/slug     # Einzelne Felder eines Artikels ändern
DELETE /articles/slug     # Einen Artikel löschen

3. Semantisch korrekte HTTP-Methoden

Jede HTTP-Methode hat eine spezifische Bedeutung. Die Einhaltung dieser Semantik ist entscheidend für das Caching und die Vorhersehbarkeit Ihrer API:

  • GET — Daten abrufen. Muss sicher sein (keine Seiteneffekte) und idempotent (mehrfache Aufrufe liefern das gleiche Ergebnis).
  • POST — Eine neue Ressource erstellen. Nicht idempotent – zwei Aufrufe erstellen zwei Datensätze.
  • PUT — Eine Ressource vollständig ersetzen. Idempotent.
  • PATCH — Teilweise Aktualisierung (nur geänderte Felder senden).
  • DELETE — Eine Ressource entfernen. Idempotent – das Löschen einer bereits gelöschten Ressource sollte 404 liefern, aber keinen Systemfehler auslösen.

4. Präzise HTTP-Statuscodes zurückgeben

Statuscodes sind die Sprache der Kommunikation zwischen Server und Client. Sie ersparen es dem Client, den Response-Body mühsam nach Fehlern zu durchsuchen. Ein 200 OK für eine fehlgeschlagene Anfrage ist ein absolutes No-Go.

Wichtige Statuscodes im Überblick
200 OK              # Erfolg bei GET, PATCH, DELETE
201 Created         # Erfolg bei POST (liefert die neue Ressource)
204 No Content      # Erfolg bei DELETE (kein Inhalt zurückgegeben)
400 Bad Request     # Ungültige Syntax oder Validierungsfehler
401 Unauthorized    # Fehlende oder ungültige Authentifizierung
403 Forbidden       # Authentifiziert, aber keine Berechtigung
404 Not Found       # Ressource existiert nicht
409 Conflict        # Konflikt (z. B. E-Mail-Adresse bereits vergeben)
422 Unprocessable   # Syntaktisch korrekt, aber semantisch falsch
429 Too Many Requests  # Rate Limit überschritten
500 Internal Server Error  # Unerwarteter Serverfehler

5. Einheitliche Fehlerantworten gestalten

Wenn etwas schiefgeht, benötigen Entwickler klare Informationen. Strukturieren Sie Fehlerobjekte immer identisch, damit Clients sie generisch verarbeiten können:

Struktur einer konsistenten Fehlermeldung
{
  "error": {
    "status": 422,
    "code": "VALIDATION_ERROR",
    "message": "Die Eingabedaten sind ungültig.",
    "details": [
      {
        "field": "email",
        "message": "Muss eine gültige E-Mail-Adresse sein."
      },
      {
        "field": "password",
        "message": "Das Passwort muss mindestens 8 Zeichen lang sein."
      }
    ]
  }
}

6. Versionierung von Anfang an einplanen

Schnittstellen verändern sich. Ohne Versionierung führen "Breaking Changes" dazu, dass alle bestehenden Integrationen abstürzen. Die gängigste Methode ist die Versionierung über die URL:

  • URL-Versionierung (Empfohlen): /api/v1/users — Einfach zu testen und für Caching-Layer transparent.
  • Header-Versionierung: Accept: application/vnd.myapi.v2+json — Hält die URL sauber, ist aber schwerer zu debuggen.

Erhöhen Sie die Hauptversion (v1 zu v2) nur bei inkompatiblen Änderungen. Das Hinzufügen neuer Felder oder Endpunkte gilt nicht als Breaking Change.

7. Paginierung für große Datenmengen

Geben Sie niemals eine unbegrenzte Anzahl von Datensätzen zurück. Dies belastet die Datenbank und den Client. Implementieren Sie Paginierung und liefern Sie Metadaten mit:

Beispiel für Cursor-basierte Paginierung
{
  "data": [
    { "id": "usr_abc123", "name": "Max Mustermann" },
    { "id": "usr_def456", "name": "Erika Musterfrau" }
  ],
  "pagination": {
    "total": 1250,
    "page": 1,
    "per_page": 20,
    "next_cursor": "usr_def456",
    "has_more": true
  }
}

8. Sicherheit: HTTPS ist Pflicht

Jede API muss ausschließlich über HTTPS erreichbar sein. Da APIs oft sensible Daten wie Passwörter oder API-Keys übertragen, dürfen diese niemals im Klartext über das Netzwerk gesendet werden. Unverschlüsseltes HTTP ist im Jahr 2025 nicht mehr akzeptabel.

9. Rate Limiting implementieren

Schützen Sie Ihre Infrastruktur vor Missbrauch und DoS-Angriffen. Nutzen Sie Standard-Header, um dem Client mitzuteilen, wie viele Anfragen noch erlaubt sind:

Rate Limit Header Beispiele
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 734
X-RateLimit-Reset: 1718481600

Wird das Limit überschritten, sollte die API mit 429 Too Many Requests und einem Retry-After Header antworten.

10. Umfassende Dokumentation (OpenAPI)

Eine API ohne Dokumentation ist für externe Entwickler nutzlos. Verwenden Sie die OpenAPI-Spezifikation (ehemals Swagger). Damit lassen sich interaktive Dokumentationen, Client-SDKs und automatisierte Tests erstellen, was die Akzeptanz Ihrer API massiv erhöht.

JSON-Daten sofort validieren und optimieren

Formatieren Sie Ihre API-Antworten für besseres Debugging oder komprimieren Sie JSON-Payloads für die Produktion mit unseren kostenlosen Tools.