← Zurück zu den Artikeln
APIs & Integration

REST API: Mehr als ein Modewort. Es ist die Sprache, die Ihre Anwendungen sprechen.

Ein anfängerfreundlicher Leitfaden zu REST API: Was es ist, warum es wichtig ist, die 6 Kernprinzipien und ein vollständiges Praxisbeispiel mit echten HTTP-Anfragen und -Antworten.

Verfügbare Sprachen
REST API: Mehr als ein Modewort. Es ist die Sprache, die Ihre Anwendungen sprechen.
Ausgewählter Artikel ↗

REST API: Mehr als ein Modewort. Es ist die Sprache, die Ihre Anwendungen sprechen.

Sie hören oft von Entwicklern oder sehen in Stellenanzeigen Formulierungen wie „Integration über REST API" oder „Schreiben von RESTful-Services". Aber was bedeutet dieser Begriff eigentlich? Wenn Sie kein technischer Spezialist sind oder gerade erst Ihre Reise in die IT beginnen, mag es wie komplexe Magie erscheinen.

In Wirklichkeit ist REST API ein grundlegendes Konzept, das es verschiedenen Programmen ermöglicht, über das Internet miteinander zu kommunizieren. Lassen Sie uns aufschlüsseln, was es ist, warum es benötigt wird und auf welchen Regeln es aufbaut.

Was ist eine REST API? Eine einfache Analogie

Stellen Sie sich ein Restaurant vor.

  • Sie (der Client) sind eine Anwendung (z. B. das Frontend Ihrer Website oder eine mobile App).
  • Die Küche ist eine andere Anwendung (Ihr Server oder ein Drittanbieterdienst), in der Daten und Logik gespeichert sind.
  • Der Kellner ist die REST API.

Sie gehen nicht in die Küche, um eine Bestellung aufzugeben oder zu prüfen, ob ein Gericht verfügbar ist. Sie sprechen mit dem Kellner. Der Kellner nimmt Ihre Bestellung (die Anfrage) entgegen, bringt sie in die Küche und bringt Ihnen dann das zubereitete Gericht (die Antwort).

REST API (Representational State Transfer Application Programming Interface) ist eine Reihe von Regeln und Konventionen, die es einer Anwendung ermöglichen, Daten oder Aktionen von einer anderen Anwendung über das Internet anzufordern. Das Schlüsselwort hier ist „State Transfer" (Zustandsübertragung). Im Wesentlichen fordert der Client eine „Repräsentation" (zum Beispiel im JSON-Format) einer Ressource (eines Benutzers, eines Produkts, einer Bestellung) vom Server an.

Warum wird es benötigt? 3 Hauptgründe

  1. Trennung der Zuständigkeiten. Das Frontend (was der Benutzer sieht) und das Backend (Logik und Datenbank) können unabhängig voneinander entwickelt und skaliert werden. Sie können eine App für iOS, Android und eine Website erstellen, und alle kommunizieren über dieselbe API mit demselben Backend.
  2. Integration mit externen Diensten. Möchten Sie Zahlungen über Stripe hinzufügen, Benachrichtigungen über Telegram senden oder Wetterdaten abrufen? Sie bauen nicht Ihre eigene Zahlungsabwicklung oder Wetterstation; Sie nutzen eine fertige API eines Drittanbieterdienstes.
  3. Universalität. REST stützt sich auf HTTP-Standards, die von allen Geräten und Programmiersprachen verstanden werden. Dies macht es zur idealen „Lingua franca" für das Web.

6 Prinzipien einer RESTful API (Die Regeln für unseren „Kellner")

Damit eine API als RESTful gilt, sollte sie mehrere Schlüsselprinzipien befolgen:

  1. Einheitliche Schnittstelle. Dies ist das wichtigste Prinzip. Alle API-Anfragen müssen standardisiert sein.
  2. Zustandslosigkeit. Jede Anfrage vom Client an den Server muss alle Informationen enthalten, die zum Verstehen und Verarbeiten der Anfrage erforderlich sind. Der Server sollte sich nichts über vorherige Anfragen desselben Clients merken. Sitzungen und Autorisierung werden häufig mithilfe von Tokens (z. B. JWT) implementiert, die mit jeder Anfrage gesendet werden.
  3. Cache-Fähigkeit. Serverantworten müssen explizit angeben, ob sie zwischengespeichert werden können und für wie lange. Dies verbessert die Leistung drastisch, indem die Last auf dem Server reduziert wird.
  4. Client-Server-Architektur. Eine klare Trennung der Zuständigkeiten: Der Client ist für die Benutzeroberfläche verantwortlich, der Server für Datenspeicherung und Geschäftslogik. Dies ermöglicht es ihnen, sich unabhängig weiterzuentwickeln.
  5. Mehrschichtiges System. Zwischen Client und Server können mehrere Schichten liegen (Load Balancer, Proxys, Gateways). Der Client kann normalerweise nicht erkennen, ob er direkt mit dem Endserver oder mit einem Vermittler verbunden ist.
  6. Code on Demand (Optional). Der Server kann die Funktionalität eines Clients vorübergehend erweitern oder anpassen, indem er ausführbaren Code (z. B. JavaScript) überträgt. Dieses Prinzip wird seltener verwendet.

Ein lebendiges Beispiel: Verwaltung einer Bücherliste

Nehmen wir an, wir haben eine API für eine Bibliothek. Unsere Ressource ist Book.

  • Liste aller Bücher abrufen:
  • Buch mit ID=1 abrufen:
  • Neues Buch erstellen:
  • Buch mit ID=2 aktualisieren:
  • Buch mit ID=1 löschen:

Beachten Sie, wie die HTTP-Methode und die URL zusammen definieren, was wir tun wollen, während der Request-Body (für POST/PUT) die Details enthält.

Beispiel:

1. GET /articles — Artikelsammlung abrufen

Wird verwendet, um eine Liste aller Artikel mit Paginierungsunterstützung abzurufen.

Anfrage:

GET /v1/articles?page=1&limit=10 Host: api.myblog.com Accept: application/json

Antwort:

  • Statuscode: 200 OK
  • Body: Gibt ein Array von Artikeln und Paginierungsmetadaten zurück. Dies folgt dem HATEOAS-Prinzip.
{ "data": [ { "id": "a1b2c3", "title": "What is RESTful API", "summary": "Simple explanation for everyone", "author": "John Doe", "createdAt": "2023-10-25T10:30:00Z", "_links": { "self": { "href": "/v1/articles/a1b2c3" }, "author": { "href": "/v1/users/john-doe" } } }, { "id": "d4e5f6", "title": "Introduction to Docker", "summary": "Containerization for beginners", "author": "Jane Smith", "createdAt": "2023-10-24T15:45:00Z", "_links": { "self": { "href": "/v1/articles/d4e5f6" }, "author": { "href": "/v1/users/jane-smith" } } } ], "_meta": { "page": 1, "limit": 10, "totalPages": 5, "totalCount": 48 }, "_links": { "self": { "href": "/v1/articles?page=1&limit=10" }, "next": { "href": "/v1/articles?page=2&limit=10" }, "last": { "href": "/v1/articles?page=5&limit=10" } } }

2. GET /articles/{id} — Einzelnen Artikel abrufen

Wird verwendet, um vollständige Informationen über einen bestimmten Artikel abzurufen.

Anfrage:

GET /v1/articles/a1b2c3 Host: api.myblog.com Accept: application/json

Antwort:

  • Statuscode: 200 OK
  • Body: Gibt die vollständige Repräsentation der Ressource zurück.
{ "data": { "id": "a1b2c3", "title": "What is RESTful API", "content": "Full article text... REST API is not just a buzzword...", "summary": "Simple explanation for everyone", "author": "John Doe", "status": "published", "tags": ["api", "rest", "programming"], "createdAt": "2023-10-25T10:30:00Z", "updatedAt": "2023-10-26T09:15:00Z", "_links": { "self": { "href": "/v1/articles/a1b2c3" }, "author": { "href": "/v1/users/john-doe" }, "comments": { "href": "/v1/articles/a1b2c3/comments" } } } }

3. POST /articles — Neuen Artikel erstellen

Wird verwendet, um eine neue Ressource zu erstellen. Der Server generiert eine neue ID.

Anfrage:

  • Wichtig: Der Client sendet nicht id, createdAt usw. Der Server verwaltet diese Felder.
POST /v1/articles Host: api.myblog.com Content-Type: application/json X-API-Key: your-secret-api-key-12345 { "title": "New Article About Microservices", "content": "Text of the new article...", "summary": "Brief description of microservice architecture", "tags": ["microservices", "architecture"], "status": "draft" }

Antwort:

  • Statuscode: 201 Created
  • Header Location: Verweist auf die URL der erstellten Ressource.
  • Body: Gibt die erstellte Ressource zurück.
HTTP/1.1 201 Created Location: /v1/articles/g7h8i9 Content-Type: application/json { "data": { "id": "g7h8i9", "title": "New Article About Microservices", "content": "Text of the new article...", "summary": "Brief description of microservice architecture", "author": "CurrentAuthenticatedUser", "status": "draft", "tags": ["microservices", "architecture"], "createdAt": "2023-10-27T14:20:00Z", "updatedAt": "2023-10-27T14:20:00Z", "_links": { "self": { "href": "/v1/articles/g7h8i9" }, "author": { "href": "/v1/users/currentauthenticateduser" } } } }

4. PUT /articles/{id} — Vollständige Artikelaktualisierung

Wird für die vollständige Ersetzung der Ressource verwendet. Der Client muss alle Felder senden.

Anfrage:

PUT /v1/articles/g7h8i9 Host: api.myblog.com Content-Type: application/json X-API-Key: your-secret-api-key-12345 { "title": "Updated Title About Microservices", "content": "Completely updated article text...", "summary": "New brief description", "tags": ["microservices", "cloud", "docker"], "status": "published" }

Antwort:

  • Statuscode: 200 OK
  • Body: Gibt die vollständige Repräsentation der aktualisierten Ressource zurück.
{ "data": { "id": "g7h8i9", "title": "Updated Title About Microservices", "content": "Completely updated article text...", "summary": "New brief description", "author": "CurrentAuthenticatedUser", "status": "published", "tags": ["microservices", "cloud", "docker"], "createdAt": "2023-10-27T14:20:00Z", "updatedAt": "2023-10-27T16:45:00Z", "_links": { "self": { "href": "/v1/articles/g7h8i9" }, "author": { "href": "/v1/users/currentauthenticateduser" } } } }

5. PATCH /articles/{id} — Teilweise Artikelaktualisierung

Wird verwendet, um nur bestimmte Felder zu aktualisieren. Effizienter als PUT.

Anfrage:

PATCH /v1/articles/g7h8i9 Host: api.myblog.com Content-Type: application/json X-API-Key: your-secret-api-key-12345 { "status": "published", "tags": ["microservices", "cloud-native", "kubernetes"] }

Antwort:

  • Statuscode: 200 OK
  • Body: Gibt die aktualisierte Repräsentation der Ressource zurück.
{ "data": { "id": "g7h8i9", "title": "Updated Title About Microservices", "content": "Completely updated article text...", "summary": "New brief description", "author": "CurrentAuthenticatedUser", "status": "published", "tags": ["microservices", "cloud-native", "kubernetes"], "createdAt": "2023-10-27T14:20:00Z", "updatedAt": "2023-10-27T17:50:00Z", "_links": { "self": { "href": "/v1/articles/g7h8i9" }, "author": { "href": "/v1/users/currentauthenticateduser" } } } }

6. DELETE /articles/{id} — Artikel löschen

Wird verwendet, um eine Ressource zu löschen.

Anfrage:

DELETE /v1/articles/g7h8i9 Host: api.myblog.com X-API-Key: your-secret-api-key-12345

Antwort:

  • Statuscode: 204 No Content
  • Body: Keiner.
HTTP/1.1 204 No Content

Fehlerbehandlung (gemäß REST-Prinzipien)

Eine RESTful API sollte immer aussagekräftige HTTP-Statuscodes und Fehlermeldungen zurückgeben.

Beispiel: GET /articles/invalid-id-999

Antwort:

  • Statuscode: 404 Not Found
  • Body:
{ "error": { "code": "RESOURCE_NOT_FOUND", "message": "Article with identifier 'invalid-id-999' was not found.", "details": "Please check the identifier and try again." } }

Beispiel: POST /articles mit ungültigen Daten

Anfrage:

{ "title": "" }

Antwort:

  • Statuscode: 422 Unprocessable Entity (oder 400 Bad Request)
  • Body:
{ "error": { "code": "VALIDATION_ERROR", "message": "Request data failed validation.", "details": [ { "field": "title", "error": "Field 'title' cannot be empty." } ] } }

Zusammenfassung der Einhaltung der REST-Prinzipien:

  1. Einheitliche Schnittstelle: Alle Endpunkte arbeiten mit der Artikel-Ressource über Standard-HTTP-Methoden. Antworten haben ein konsistentes Format (data, _meta, _links).
  2. Zustandslos: Jede Anfrage enthält den gesamten notwendigen Kontext (z. B. API Key).
  3. Cache-Fähigkeit: GET-Anfragen können zwischengespeichert werden (impliziert durch Status 200), in einer echten API könnten Cache-Control-Header hinzugefügt werden.
  4. Client-Server-Architektur: Klare Trennung: Client sendet Anfragen, Server verwaltet Artikeldaten.
  5. Mehrschichtiges System: Der Client weiß nicht, ob hinter api.myblog.com ein einzelner Server oder ein ganzer Cluster steht.
  6. Code on Demand (optional): In diesem Beispiel nicht verwendet.
  7. HATEOAS: Das Vorhandensein von _links in Antworten ermöglicht es dem Client, verfügbare Aktionen dynamisch zu entdecken, was ein Schlüsselmerkmal einer ausgereiften REST API ist.

Fazit

REST API ist nicht nur eine Technologie; es ist ein Architekturstil, der zum De-facto-Standard für den Aufbau von Web-Services geworden ist. Seine Stärke liegt in seiner Einfachheit, Vorhersehbarkeit und Zuverlässigkeit, aufgebaut auf dem über Jahrzehnte verfeinerten HTTP-Protokoll.

Das Verständnis dieser Prinzipien ist nicht nur für Entwickler nützlich, sondern auch für Projektmanager, Produktmanager und Geschäftsinhaber, um effektiv mit technischen Teams zu kommunizieren und zu verstehen, wie moderne digitale Produkte aufgebaut sind.

Wie aktiv nutzen Sie REST APIs in Ihren Projekten? Sind Ihnen interessante Integrationsfälle begegnet? Teilen Sie sie in den Kommentaren!

Technologien & Themen

Artikel-Tags

Keine Artikel entsprechen diesen Filtern.

Haben Sie ein Projekt oder eine Idee zu besprechen?

Lassen Sie uns sprechen ↗