REST APIs ermöglichen es unterschiedlichen Anwendungen, über das Internet miteinander zu kommunizieren und Daten auszutauschen. Sie kommen beispielsweise in Onlineshops, mobilen Apps, Content-Management-Systemen und Projektmanagement-Tools wie Jira und Confluence zum Einsatz. Auch mit Programmiersprachen wie Python lassen sich REST APIs nutzen. Doch wie funktioniert eine REST API, was unterscheidet sie von anderen Schnittstellen und welche technischen Grundlagen solltest du kennen?

Definition: Was ist eine REST API?

REST API steht für Representational State Transfer Application Programming Interface. Gemeint ist eine Programmierschnittstelle, die sich an den Prinzipien des REST-Architekturstils orientiert und den Austausch von Daten zwischen unterschiedlichen Softwaresystemen ermöglicht.

REST APIs verwenden im Web normalerweise das HTTP-Protokoll. Anwendungen können damit Daten abrufen, erstellen, verändern oder löschen. Die Kommunikation erfolgt über definierte Adressen, sogenannte Endpunkte, und standardisierte HTTP-Methoden.

Das Wichtigste zur REST API: Eine REST API ermöglicht die Kommunikation zwischen Anwendungen über klar definierte Schnittstellen. Sie verwendet typischerweise HTTP-Methoden wie GET, POST, PUT und DELETE. Daten werden häufig im JSON-Format übertragen. Ein zentrales REST-Prinzip ist die zustandslose Verarbeitung einzelner Anfragen.

Wie funktioniert eine REST API?

Eine REST API arbeitet typischerweise nach dem Client-Server-Prinzip. Dabei sendet ein Client, beispielsweise eine Webseite oder eine mobile App, eine Anfrage an einen Server. Dieser verarbeitet die Anfrage und liefert eine passende Antwort zurück.

Der Ablauf einer REST-API-Anfrage lässt sich in fünf Schritte unterteilen:

  1. Anfrage erstellen: Der Client bestimmt, welche Daten oder Funktionen benötigt werden.
  2. HTTP-Anfrage senden: Die Anwendung ruft einen bestimmten API-Endpunkt mit einer passenden HTTP-Methode auf.
  3. Berechtigung prüfen: Der Server kontrolliert gegebenenfalls die Authentifizierung und Zugriffsrechte.
  4. Anfrage verarbeiten: Die API ruft Daten ab oder führt die gewünschte Operation aus.
  5. Antwort zurückgeben: Der Server sendet einen HTTP-Statuscode und gegebenenfalls die angeforderten Daten.

Ein einfaches REST-API-Beispiel

Angenommen, eine Anwendung möchte Informationen über ein bestimmtes Produkt abrufen. Dafür könnte sie folgende Anfrage senden:

GET https://api.example.com/products/123

Der Server liefert daraufhin beispielsweise diese JSON-Antwort:

{
  "id": 123,
  "name": "Laptop",
  "preis": 899.00,
  "verfuegbar": true
}

Die Anwendung kann die erhaltenen Informationen anschließend weiterverarbeiten und beispielsweise auf einer Webseite anzeigen. Die verwendete Adresse und die Produktdaten sind fiktiv.

Welche HTTP-Methoden verwendet eine REST API?

HTTP-Methoden legen fest, welche Art von Aktion ein Client mit einer Ressource durchführen möchte. Zu den wichtigsten Methoden gehören:

HTTP-Methode Funktion Beispiel
GET Ressourcen abrufen Produktinformationen anzeigen
POST Daten übermitteln, häufig neue Ressourcen erstellen Neue Bestellung anlegen
PUT Ressource vollständig ersetzen oder erstellen Kundendatensatz ersetzen
PATCH Ressource teilweise verändern Lieferadresse aktualisieren
DELETE Ressource entfernen Eintrag löschen

Welche Methoden verfügbar sind, hängt von der jeweiligen API ab. Außerdem benötigen schreibende oder löschende Operationen häufig besondere Berechtigungen.

Was sind REST-API-Endpunkte?

Ein API-Endpunkt (Endpoint) ist eine Adresse, über die eine bestimmte Ressource oder Funktion einer API erreichbar ist.

Beispielsweise könnte eine REST API folgende Endpunkte anbieten:

GET    /products
GET    /products/123
POST   /products
PATCH  /products/123
DELETE /products/123

Über den ersten Endpunkt werden alle zugänglichen Produkte abgerufen. Der zweite liefert Informationen zu einem bestimmten Produkt. Die übrigen Endpunkte ermöglichen entsprechende Änderungen.

Was sind Ressourcen in einer REST API?

Bei REST stehen Ressourcen im Mittelpunkt. Das können beispielsweise Produkte, Kunden, Benutzer, Blogartikel oder Projekte sein.

Jede Ressource besitzt eine eindeutige Identifikation, die häufig über eine URL erfolgt. Der Client arbeitet mit einer Darstellung dieser Ressource, beispielsweise einem JSON-Dokument, ohne die interne Datenbankstruktur kennen zu müssen.

Welche Prinzipien kennzeichnen REST?

REST ist kein eigenständiges Übertragungsprotokoll, sondern ein Architekturstil. Er beschreibt mehrere Grundprinzipien für den Aufbau verteilter Anwendungen.

1. Client-Server-Trennung

Die Benutzeroberfläche und die serverseitige Datenverarbeitung sind voneinander getrennt. Dadurch können beide Komponenten unabhängig weiterentwickelt werden.

2. Zustandslosigkeit (Stateless)

Jede Anfrage muss alle Informationen enthalten, die für ihre Verarbeitung notwendig sind. Der Server darf nicht auf einen gespeicherten Sitzungskontext angewiesen sein, um eine neue Anfrage zu verstehen.

Das bedeutet nicht, dass ein REST-Server keine Daten speichern darf. Gespeicherte Benutzerkonten, Produkte oder Bestellungen sind mit diesem Prinzip vereinbar.

3. Cachefähigkeit

API-Antworten können als cachefähig oder nicht cachefähig gekennzeichnet werden. Geeignetes Caching reduziert wiederholte Serveranfragen und kann die Verarbeitung beschleunigen.

4. Einheitliche Schnittstelle

REST setzt auf einheitliche Regeln für die Identifikation und Darstellung von Ressourcen sowie deren Bearbeitung. Dazu gehört auch, dass Nachrichten ausreichend Informationen enthalten, um korrekt verarbeitet zu werden.

5. Mehrschichtige Architektur

Zwischen Client und eigentlichem Anwendungsserver können weitere Komponenten wie Proxys, Gateways oder Load Balancer eingesetzt werden.

6. Code on Demand (optional)

Ein Server kann dem Client bei Bedarf ausführbaren Code bereitstellen, beispielsweise JavaScript. Dieses Prinzip ist optional und wird bei vielen REST APIs nicht genutzt.

Wichtige REST-Grundregel: Nicht jede HTTP-Schnittstelle, die JSON zurückliefert, erfüllt automatisch alle REST-Prinzipien. Besonders die zustandslose Kommunikation und eine einheitliche, ressourcenorientierte Schnittstelle sind wesentliche Merkmale.

Was bedeuten JSON und HTTP-Statuscodes bei REST APIs?

JSON als Datenformat

JSON (JavaScript Object Notation) ist ein kompaktes, textbasiertes Datenformat. Es wird häufig für die Übertragung strukturierter Informationen verwendet.

REST schreibt JSON allerdings nicht zwingend vor. Je nach Schnittstelle können auch XML, HTML oder andere Formate verwendet werden.

Wichtige HTTP-Statuscodes

Der Statuscode einer API-Antwort zeigt an, ob eine Anfrage erfolgreich war oder ein Problem aufgetreten ist.

Statuscode Bedeutung
200 OK Anfrage erfolgreich verarbeitet
201 Created Neue Ressource erfolgreich erstellt
204 No Content Anfrage erfolgreich, keine Antwortdaten
400 Bad Request Fehlerhafte Anfrage
401 Unauthorized Gültige Authentifizierung fehlt
403 Forbidden Zugriff nicht erlaubt
404 Not Found Ressource nicht gefunden
429 Too Many Requests Zu viele Anfragen innerhalb eines Zeitraums
500 Internal Server Error Interner Serverfehler

Für die Fehlerbehandlung ist es sinnvoll, neben dem Statuscode auch die gegebenenfalls übermittelten Fehlerinformationen auszuwerten.

Was ist der Unterschied zwischen API und REST API?

Der Begriff API ist allgemeiner gefasst als REST API. Jede REST API ist eine API, aber nicht jede API ist eine REST API.

Merkmal API REST API
Bedeutung Allgemeine Programmierschnittstelle API nach REST-Architekturprinzipien
Kommunikation Unterschiedliche Verfahren möglich Im Web typischerweise HTTP
Datenformat Abhängig von der Schnittstelle Häufig JSON, aber nicht vorgeschrieben
Architektur Keine bestimmte Architektur vorausgesetzt Ressourcenorientiert und zustandslos
Einsatzbereich Software, Betriebssysteme, Bibliotheken und Webdienste Vor allem Webservices und verteilte Webanwendungen

Was ist der Unterschied zwischen REST, SOAP und GraphQL?

Neben REST werden weitere Ansätze für den Datenaustausch zwischen Anwendungen verwendet.

  • REST: Architekturstil mit ressourcenorientierter Kommunikation, im Web meist über HTTP.
  • SOAP: Nachrichtenprotokoll, das XML verwendet und standardisierte Erweiterungen beispielsweise für Sicherheit und Transaktionen bietet.
  • GraphQL: Abfragesprache und Laufzeitumgebung, mit der Clients gezielt benötigte Datenfelder anfordern können.

REST eignet sich für viele klassische Webanwendungen und Integrationen. GraphQL kann vorteilhaft sein, wenn Clients sehr unterschiedliche Datenanforderungen haben. SOAP wird unter anderem in bestehenden Unternehmenssystemen eingesetzt.

Wie funktioniert die Jira REST API?

Jira ist eine Software von Atlassian zur Verwaltung von Aufgaben, Projekten und Entwicklungsprozessen. Über die Jira REST API lassen sich viele dieser Funktionen programmatisch verwenden.

Was kann man mit der Jira REST API machen?

  • Jira-Vorgänge und ihre Details abrufen
  • Neue Aufgaben oder Tickets erstellen
  • Bestehende Vorgänge bearbeiten
  • Projektinformationen und Statusdaten auslesen
  • Workflows und Vorgangsübergänge automatisieren
  • Jira mit anderen Anwendungen verbinden

Beispiel für einen Jira-API-Endpunkt

In Jira Cloud kannst du über die REST API v3 beispielsweise einen bestimmten Vorgang abrufen:

GET https://deine-domain.atlassian.net/rest/api/3/issue/PROJ-123

Die Anfrage bezieht sich auf den fiktiven Jira-Vorgang „PROJ-123“. Sofern der Vorgang existiert und die notwendigen Zugriffsrechte vorhanden sind, liefert die API Informationen wie Zusammenfassung, Status oder Bearbeiter.

Die REST API v3 wird in Jira Cloud verwendet. Bei Jira Data Center können sich API-Versionen, Endpunkte und Authentifizierungsverfahren unterscheiden.

Wie funktioniert die Confluence REST API?

Confluence ist eine Plattform von Atlassian für Dokumentation, Wissensmanagement und Teamzusammenarbeit. Die Confluence REST API ermöglicht den programmatischen Zugriff auf viele Inhalte und Funktionen.

Typische Anwendungen der Confluence REST API

  • Seiten abrufen: Dokumentationsinhalte automatisiert auslesen.
  • Seiten erstellen: Neue Dokumentationen aus anderen Anwendungen heraus anlegen.
  • Inhalte aktualisieren: Bestehende Seiten und bestimmte Metadaten verändern.
  • Bereiche verwalten: Informationen über Confluence-Spaces abrufen.
  • Systeme verbinden: Beispielsweise Berichte aus Jira in Dokumentationsprozesse integrieren.

Beispiel für einen Confluence-API-Endpunkt

In Confluence Cloud können über die REST API v2 beispielsweise Seiten abgerufen werden:

GET https://deine-domain.atlassian.net/wiki/api/v2/pages?limit=5

Die Anfrage fordert bis zu fünf Seiten an, sofern diese für den verwendeten Zugriff sichtbar sind.

Bei größeren Datenmengen verwendet die Confluence REST API v2 eine cursorbasierte Seitennummerierung (Pagination). Damit können Ergebnisse schrittweise abgerufen werden.

Wie lassen sich Jira und Confluence über REST APIs verbinden?

Da Jira und Confluence beide REST-Schnittstellen bereitstellen, lassen sich Daten zwischen den Anwendungen und zusätzlichen Systemen automatisiert verarbeiten.

Ein typisches Szenario wäre die automatische Erstellung eines Projektberichts:

  1. Ein Skript ruft über die Jira REST API die relevanten Projektvorgänge ab.
  2. Die Ergebnisse werden nach Status, Priorität oder Bearbeiter ausgewertet.
  3. Das Skript erstellt daraus eine strukturierte Zusammenfassung.
  4. Über die Confluence REST API wird eine vorhandene Berichtsseite aktualisiert oder eine neue Seite angelegt.

So können wiederkehrende Dokumentationsaufgaben teilweise automatisiert werden. Für die Umsetzung werden entsprechende Berechtigungen sowie eine geeignete Behandlung von Datenformaten und Seitenversionen benötigt.

Wie verwendet man eine REST API mit Python?

Python eignet sich besonders gut, um REST APIs anzusprechen und Daten automatisiert zu verarbeiten. Häufig wird dafür die Bibliothek requests verwendet.

REST-API-Anfrage mit Python

Das folgende Beispiel zeigt eine einfache GET-Anfrage an eine öffentlich erreichbare Test-API:

import requests

url = "https://jsonplaceholder.typicode.com/posts/1"

response = requests.get(url, timeout=10)
response.raise_for_status()

daten = response.json()

print(daten["title"])

Das Skript sendet eine HTTP-Anfrage, überprüft den HTTP-Status und wandelt die JSON-Antwort in ein Python-Datenobjekt um. Anschließend wird der Titel des abgerufenen Beitrags ausgegeben.

Was bedeuten die einzelnen Python-Befehle?

  • import requests: Lädt die Bibliothek für HTTP-Anfragen.
  • requests.get(): Sendet eine GET-Anfrage an den angegebenen Endpunkt.
  • timeout=10: Begrenzt die Wartezeit für Verbindungsaufbau und Datenempfang.
  • raise_for_status(): Löst bei bestimmten HTTP-Fehlerstatuscodes eine Ausnahme aus.
  • response.json(): Verarbeitet die JSON-Antwort als Python-Datenstruktur.

Kann Python auch Daten über eine REST API senden?

Ja. Mit requests.post(), requests.put(), requests.patch() und requests.delete() stehen auch Funktionen für andere HTTP-Methoden zur Verfügung.

Damit kannst du beispielsweise neue Einträge erstellen, Datensätze aktualisieren oder Ressourcen löschen, sofern die API diese Aktionen erlaubt.

Wie funktioniert die Authentifizierung bei REST APIs?

Viele REST APIs enthalten nicht öffentliche Daten oder ermöglichen Änderungen an bestehenden Systemen. Deshalb müssen sich Anwendungen häufig authentifizieren.

Gängige Möglichkeiten sind:

  • API Key: Ein Schlüssel identifiziert eine Anwendung oder einen API-Zugang.
  • Bearer Token: Ein Zugriffstoken wird häufig über den HTTP-Header Authorization übertragen.
  • OAuth 2.0: Ein Framework für die delegierte Autorisierung, beispielsweise wenn eine Anwendung im Namen eines Nutzers auf Daten zugreift.
  • HTTP Basic Authentication: Zugangsdaten werden in einem standardisierten HTTP-Header übertragen und sollten nur über eine verschlüsselte Verbindung verwendet werden.

Bei Jira Cloud und Confluence Cloud hängen die verfügbaren Authentifizierungsverfahren unter anderem von der Art der Integration ab. Für persönliche Skripte werden beispielsweise bestimmte API-Token-Verfahren unterstützt, während Anwendungen häufig OAuth 2.0 verwenden.

Sicherheitsregel: Übertrage vertrauliche Zugangsdaten ausschließlich über HTTPS. API Keys und Tokens sollten nicht öffentlich im Programmcode stehen. Verwende möglichst eingeschränkte Berechtigungen und speichere Zugangsdaten geschützt.

Welche Vorteile bietet eine REST API?

REST APIs haben sich in der Webentwicklung unter anderem wegen ihrer flexiblen und vergleichsweise einfach verständlichen Struktur etabliert.

  • Plattformunabhängigkeit: Unterschiedliche Programmiersprachen und Systeme können miteinander kommunizieren.
  • Klare Struktur: Ressourcen und HTTP-Methoden machen viele Schnittstellen leicht nachvollziehbar.
  • Skalierbarkeit: Zustandslose Anfragen erleichtern die Verteilung von Anfragen auf mehrere Server.
  • Wiederverwendbarkeit: Dieselbe API kann von Webseiten, mobilen Apps und anderen Programmen verwendet werden.
  • Automatisierung: Wiederkehrende Aufgaben lassen sich über Skripte und Integrationen ausführen.
  • Caching: Geeignete Antworten können zwischengespeichert werden, um Ressourcen zu sparen.

Welche Nachteile und Grenzen haben REST APIs?

Trotz ihrer Vorteile sind REST APIs nicht für jede Anwendung die optimale Lösung.

  • Mehrere Anfragen: Komplexe Datenstrukturen können den Abruf über verschiedene Endpunkte erfordern.
  • Unterschiedliche Implementierungen: REST APIs verschiedener Anbieter können sich in Aufbau und Verhalten erheblich unterscheiden.
  • Versionsänderungen: Anpassungen an einer Schnittstelle können bestehende Integrationen beeinträchtigen.
  • Netzwerkabhängigkeit: Verbindungsprobleme oder Serverausfälle können API-Anfragen unterbrechen.
  • Sicherheitsaufwand: Authentifizierung, Autorisierung und Eingabevalidierung müssen zuverlässig umgesetzt werden.
  • Nutzungslimits: API-Anbieter können die Anzahl zulässiger Anfragen beschränken.

Was sind Best Practices für REST APIs?

Wenn du eine REST API entwickelst oder integrierst, helfen einige grundlegende Regeln dabei, Sicherheit, Verständlichkeit und Wartbarkeit zu verbessern.

  1. Ressourcen klar benennen: Verwende nachvollziehbare Endpunkte wie /products oder /users.
  2. HTTP-Methoden korrekt einsetzen: GET sollte beispielsweise keine beabsichtigten Datenänderungen auslösen.
  3. Statuscodes sinnvoll nutzen: Gib passende HTTP-Codes für erfolgreiche und fehlgeschlagene Anfragen zurück.
  4. Zugriffsrechte kontrollieren: Prüfe serverseitig, welche Ressourcen ein Client lesen oder verändern darf.
  5. Fehler verständlich beschreiben: Stelle nachvollziehbare Fehlermeldungen bereit, ohne vertrauliche Informationen offenzulegen.
  6. Pagination unterstützen: Große Ergebnismengen sollten in überschaubaren Abschnitten abrufbar sein.
  7. API dokumentieren: Beschreibe Endpunkte, Parameter, Authentifizierung und Antwortformate.
  8. Änderungen berücksichtigen: Plane, wie sich Schnittstellen weiterentwickeln lassen, ohne bestehende Anwendungen unnötig zu beeinträchtigen.

Welche Bedeutung haben REST APIs für Webseiten und SEO?

REST APIs sind kein direkter Google-Rankingfaktor. Sie können jedoch eine wichtige Rolle bei der technischen Umsetzung und Verwaltung von Webseiten spielen.

Automatisierte Inhaltsverwaltung

Über REST APIs können Inhalte aus CMS-Systemen abgerufen und aktualisiert werden. Beispielsweise stellt WordPress eine eigene REST API zur Verfügung, über die Beiträge, Seiten und andere Ressourcen zugänglich gemacht werden können.

SEO-Daten und technische Auswertungen

REST-Schnittstellen ermöglichen auch die automatisierte Verarbeitung von Daten für technische Analysen, Monitoring und Reporting. Mit Python lassen sich solche Daten abrufen, auswerten und regelmäßig in Berichte überführen.

Headless CMS und Indexierbarkeit

Bei einer Headless-CMS-Architektur wird die Inhaltsverwaltung vom Frontend getrennt. Inhalte werden häufig über APIs an eine eigenständige Webseite ausgeliefert.

Für SEO ist dabei wichtig, dass Suchmaschinen die Inhalte zuverlässig erfassen können. Serverseitiges Rendering oder statisch generierte Seiten können helfen, Schwierigkeiten bei der Darstellung JavaScript-basierter Inhalte zu vermeiden.

SEO-Grundregel: Eine REST API kann Inhalte und Daten effizient bereitstellen. Entscheidend für die Sichtbarkeit einer Webseite ist jedoch, dass relevante Inhalte für Suchmaschinen erreichbar, darstellbar und indexierbar sind.

Fazit: REST APIs als Grundlage moderner Softwareintegration

REST APIs ermöglichen eine standardisierte, ressourcenorientierte Kommunikation zwischen verschiedenen Anwendungen. Durch HTTP-Methoden, klar definierte Endpunkte und strukturierte Datenformate lassen sich Informationen abrufen und Prozesse automatisieren.

Ob du mit Python Daten verarbeiten, Jira-Vorgänge automatisieren oder Confluence-Seiten aktualisieren möchtest: REST APIs bilden die technische Grundlage für zahlreiche Integrationen. Entscheidend sind dabei eine verständliche Schnittstellenstruktur, zuverlässige Fehlerbehandlung und eine sichere Authentifizierung.

Häufig gestellte Fragen (FAQ) zur REST API

Was bedeutet REST API einfach erklärt?
Eine REST API ist eine Programmierschnittstelle, über die Anwendungen nach den Prinzipien der REST-Architektur kommunizieren. Sie verwendet im Web meist HTTP, um Daten abzurufen, zu erstellen oder zu verändern.
Was ist der Unterschied zwischen API und REST API?
API ist der allgemeine Begriff für eine Programmierschnittstelle. Eine REST API ist eine besondere Form, die sich an den Prinzipien des REST-Architekturstils orientiert.
Was kann man mit der Jira REST API machen?
Mit der Jira REST API kannst du beispielsweise Aufgaben abrufen, neue Tickets erstellen, Vorgänge bearbeiten und Projektprozesse automatisieren.
Wofür wird die Confluence REST API verwendet?
Die Confluence REST API ermöglicht es, Seiten und andere Inhalte programmatisch abzurufen, zu erstellen oder zu aktualisieren. Sie eignet sich beispielsweise zur Automatisierung von Dokumentationen.
Kann man eine REST API mit Python nutzen?
Ja. Mit Python kannst du REST APIs beispielsweise über die Bibliothek requests ansprechen, HTTP-Anfragen senden und JSON-Daten automatisiert verarbeiten.