REST = Representational State Transfer
Es ist ein Architekturstil für Web-APIs, bei dem HTTP als Transportprotokoll genutzt wird.
Eine REST-API stellt Ressourcen (z. B. User, Produkte, Bestellungen) über eindeutige URLs zur Verfügung.
Beispiel:
GET https://api.shop.com/products/42
Eigenschaften einer REST-API
-
Ressourcenorientiert → Jede Entität hat eine eigene URL.
-
Stateless → Jeder Request enthält alle Infos (z. B. Authentifizierung). Der Server speichert keinen Zustand.
-
HTTP-Methoden werden semantisch genutzt:
-
GET
→ Daten lesen -
POST
→ neue Daten anlegen -
PUT
/PATCH
→ Daten ändern -
DELETE
→ Daten löschen
-
-
Antwortformate: Meist JSON, manchmal auch XML oder YAML.
Wie erstellt man eine REST-API?
Das hängt von der Programmiersprache und dem Framework ab.
Ein generischer Ablauf:
-
Datenmodell definieren
-
Welche Ressourcen gibt es? (z. B.
User
,Product
,Order
) -
Welche Felder haben sie?
-
-
Endpoints entwerfen
-
Beispiel:
-
GET /users
→ Liste aller Nutzer -
GET /users/{id}
→ Details zu einem Nutzer -
POST /users
→ neuen Nutzer anlegen -
PUT /users/{id}
→ Nutzer aktualisieren -
DELETE /users/{id}
→ Nutzer löschen
-
-
-
Implementieren mit Framework
Beispiele:-
Node.js/Express:
app.get('/users', ...)
-
Python/Flask oder FastAPI:
@app.get("/users")
-
Java/Spring Boot:
@GetMapping("/users")
-
.NET Web API:
[HttpGet("users")]
-
-
Datenbank anbinden (z. B. SQL oder NoSQL).
-
Auth & Sicherheit
-
API-Keys, OAuth2 oder JWT für Authentifizierung.
-
HTTPS statt HTTP.
-
-
Dokumentation & Testing
-
Swagger / OpenAPI für Dokumentation.
-
Postman oder cURL zum Testen.
-
Best Practices für Nutzung
Versionierung: /api/v1/users
→ verhindert Breaking Changes.
Konsistentes Design: gleiche Strukturen und Fehlercodes.
HTTP-Statuscodes korrekt nutzen:
-
200 OK
→ erfolgreich -
201 Created
→ Ressource erstellt -
400 Bad Request
→ falsche Eingabe -
401 Unauthorized
→ Auth fehlt -
404 Not Found
→ Ressource existiert nicht -
500 Internal Server Error
→ Serverproblem
Pagination & Filtering für große Datenmengen (GET /users?page=2&limit=50
).
Rate Limiting & Caching → Performance und Schutz.
OpenAPI/Swagger nutzen → erleichtert Client-Integration.