Zuletzt aktualisiert am 04.12.2025 6 Minuten Lesezeit

REST API

REST API (Representational State Transfer Application Programming Interface) ist ein Architekturstil für die Kommunikation zwischen Client und Server über das HTTP-Protokoll. REST wurde im Jahr 2000 von Roy Fielding in seiner Dissertation definiert und hat sich zum Standard für moderne Webschnittstellen entwickelt. RESTful APIs ermöglichen es Anwendungen, Daten auszutauschen und Operationen auf Ressourcen auszuführen - typischerweise im JSON-Format.

Grundprinzipien von REST

REST basiert auf sechs grundlegenden Prinzipien, die eine skalierbare und wartbare API-Architektur ermöglichen:

Client-Server-Architektur

Die strikte Trennung von Client und Server ermöglicht eine unabhängige Entwicklung beider Komponenten. Der Client kümmert sich um die Benutzeroberfläche, während der Server die Datenverarbeitung und -speicherung übernimmt. Diese Trennung verbessert die Portabilität und Skalierbarkeit.

Zustandslosigkeit (Stateless)

API Keys

Für Server-zu-Server-Kommunikation werden oft API Keys verwendet. Diese werden entweder im Header oder als Query-Parameter übermittelt:

# Als Header
X-API-Key: dein_geheimer_api_key

# Als Query-Parameter (weniger sicher)
GET /api/users?api_key=dein_geheimer_api_key

REST vs. andere API-Architekturen

REST ist nicht die einzige Möglichkeit, APIs zu gestalten. Hier ein Vergleich mit anderen Ansätzen:

Kriterium REST GraphQL SOAP
Protokoll HTTP HTTP HTTP, SMTP, etc.
Datenformat JSON, XML JSON XML
Flexibilität Mittel Hoch Niedrig
Lernkurve Niedrig Mittel Hoch
Caching Einfach (HTTP-Caching) Komplex Komplex
Typisierung Optional (OpenAPI) Stark Stark (WSDL)
Einsatzgebiet Web-APIs, Mobile Flexible Abfragen Enterprise, Legacy

REST eignet sich besonders gut für öffentliche APIs und Anwendungen mit klar definierten Ressourcen. GraphQL bietet mehr Flexibilität bei komplexen Datenabfragen, während SOAP in älteren Enterprise-Systemen noch verbreitet ist.

HTTP-Methoden in REST APIs

REST APIs nutzen die Standard-HTTP-Methoden, um CRUD-Operationen (Create, Read, Update, Delete) auf Ressourcen durchzuführen. Jede Methode hat eine spezifische Bedeutung:

HTTP-Methode CRUD-Operation Beschreibung Beispiel
GET Read Ressource abrufen GET /api/users/1
POST Create Neue Ressource erstellen POST /api/users
PUT Update Ressource vollständig aktualisieren PUT /api/users/1
PATCH Update Ressource teilweise aktualisieren PATCH /api/users/1
DELETE Delete Ressource löschen DELETE /api/users/1

Die Wahl der richtigen HTTP-Methode ist entscheidend für eine semantisch korrekte API. GET-Anfragen sollten keine Seiteneffekte haben (idempotent), während POST neue Ressourcen erstellt.

HTTP-Statuscodes

REST APIs kommunizieren den Erfolg oder Misserfolg einer Anfrage über HTTP-Statuscodes. Du solltest die wichtigsten Codes kennen:

Statuscode Bedeutung Anwendungsfall
200 OK Erfolgreiche Anfrage GET, PUT, PATCH erfolgreich
201 Created Ressource erstellt POST erfolgreich
204 No Content Erfolg ohne Inhalt DELETE erfolgreich
400 Bad Request Fehlerhafte Anfrage Ungültige Daten im Request
401 Unauthorized Nicht authentifiziert Fehlender oder ungültiger Token
403 Forbidden Keine Berechtigung Zugriff verweigert
404 Not Found Ressource nicht gefunden Ungültige ID oder Pfad
500 Internal Server Error Serverfehler Unerwarteter Fehler auf dem Server

Praxisbeispiel: Benutzer-API

Ein typisches Beispiel für eine REST API ist eine Benutzerverwaltung. Hier siehst du, wie die verschiedenen HTTP-Methoden in der Praxis eingesetzt werden:

GET-Request: Benutzer abrufen

Mit einem GET-Request fragst du Daten vom Server ab, ohne den Zustand zu verändern:

GET /api/users/42 HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Accept: application/json

Response (200 OK):

{
  "id": 42,
  "name": "Max Mustermann",
  "email": "max@example.com",
  "role": "developer",
  "createdAt": "2024-01-15T10:30:00Z"
}

POST-Request: Neuen Benutzer erstellen

Ein POST-Request sendet Daten an den Server, um eine neue Ressource zu erstellen:

POST /api/users HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Content-Type: application/json

{
  "name": "Anna Schmidt",
  "email": "anna@example.com",
  "password": "sicheresPasswort123"
}

Response (201 Created):

{
  "id": 43,
  "name": "Anna Schmidt",
  "email": "anna@example.com",
  "role": "user",
  "createdAt": "2024-12-04T14:22:00Z"
}

URL-Design und Ressourcen

Ein gutes REST-API-Design folgt klaren Konventionen bei der URL-Struktur. Ressourcen werden als Substantive im Plural benannt:

# Gute REST-URLs
GET    /api/users              # Alle Benutzer abrufen
GET    /api/users/42           # Benutzer mit ID 42 abrufen
POST   /api/users              # Neuen Benutzer erstellen
PUT    /api/users/42           # Benutzer 42 aktualisieren
DELETE /api/users/42           # Benutzer 42 löschen

# Verschachtelte Ressourcen
GET    /api/users/42/orders    # Bestellungen von Benutzer 42
GET    /api/users/42/orders/5  # Bestellung 5 von Benutzer 42

# Schlechte URLs (vermeide Verben in URLs)
GET    /api/getUsers           # Falsch
POST   /api/createUser         # Falsch
POST   /api/deleteUser/42      # Falsch

Authentifizierung und Sicherheit

REST APIs müssen geschützt werden, da sie oft sensible Daten übertragen. Die gängigsten Authentifizierungsmethoden sind:

Bearer Token (JWT)

Die häufigste Methode ist die Verwendung von Bearer Tokens im Authorization-Header. Nach erfolgreicher Anmeldung erhält der Client einen JWT (JSON Web Token), den er bei jeder Anfrage mitsenden muss:

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ik1heCIsImlhdCI6MTUxNjIzOTAyMn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Tools für die REST-API-Entwicklung

Für die Entwicklung und das Testen von REST APIs gibt es verschiedene hilfreiche Werkzeuge:

  • Postman: Grafische Oberfläche zum Testen von API-Endpunkten
  • cURL: Kommandozeilentool für HTTP-Anfragen
  • Swagger/OpenAPI: Spezifikation und Dokumentation von APIs
  • Insomnia: Alternative zu Postman für API-Tests
  • HTTPie: Benutzerfreundliches Kommandozeilentool

Mit cURL kannst du schnell API-Endpunkte von der Kommandozeile aus testen:

# GET-Request
curl -X GET https://api.example.com/users/1 \
  -H "Authorization: Bearer TOKEN" \
  -H "Accept: application/json"

# POST-Request mit JSON-Body
curl -X POST https://api.example.com/users \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Test", "email": "test@example.com"}'

REST API in der Praxis

REST APIs sind allgegenwärtig in der modernen Softwareentwicklung. Ob du eine Mobile App entwickelst, ein Frontend mit einem Backend verbindest oder Microservices integrierst - du wirst mit REST APIs arbeiten.

Als Fachinformatiker für Anwendungsentwicklung wirst du REST APIs sowohl konsumieren als auch selbst entwickeln. Typische Frameworks für die API-Entwicklung sind Spring Boot (Java), Express.js (Node.js), Django REST Framework (Python) oder Laravel (PHP). Auch für Fachinformatiker für Systemintegration sind REST APIs relevant - etwa bei der Integration von Cloud-Diensten oder der Automatisierung von Infrastruktur.

Quellen und weiterführende Links