REST API
Was eine REST API ist
Eine REST API ist eine Schnittstelle, über die zwei Softwaresysteme Daten über das Netz austauschen, nach den Regeln des Architekturstils REST. Jede Information wird als Ressource behandelt, die unter einer eigenen Adresse erreichbar ist, und jeder Zugriff darauf folgt demselben festen Satz von Befehlen. Beschrieben hat diesen Stil Roy Fielding im Jahr 2000 in seiner Dissertation an der University of California, Irvine.
Der praktische Nutzen liegt in der Berechenbarkeit. Wer eine Ressource kennt, kennt auch die Befehle darauf, weil sie nicht je Anwendung neu erfunden werden. Genau das unterscheidet eine RESTful gebaute Schnittstelle von einer gewachsenen Sammlung einzelner Aufrufe mit eigenen Namen und eigener Logik.
HTTP-Methoden und Statuscodes
Fünf HTTP-Methoden decken den Alltag ab. GET liest, POST legt neu an, PUT ersetzt vollständig, PATCH ändert einzelne Felder, DELETE entfernt. Die Antwort trägt einen dreistelligen Statuscode, der den Ausgang beschreibt, von erfolgreich über fehlerhafte Anfrage und fehlende Berechtigung bis zum Serverfehler. Ein Fehler, der als Erfolg gemeldet wird, kostet Tage.
Zustandslosigkeit
Jede Anfrage enthält alles, was zu ihrer Bearbeitung nötig ist, auch die Anmeldung. Der Server merkt sich zwischen zwei Aufrufen nichts. Das macht den Betrieb einfacher, weil sich Anfragen beliebig auf mehrere Server verteilen lassen, verlagert aber Aufwand auf den Aufrufer. Skalierung wird damit zur Frage der Anzahl, nicht der Größe.
Grenzen und Betrieb
Ein API Endpunkt liefert immer die ganze Ressource, auch wenn nur zwei Felder gebraucht werden. Bei vielen verschachtelten Daten führt das zu einer Kette von Aufrufen, wo eine einzige Abfrage genügen würde. Eine REST API ist damit kein Allzweckwerkzeug, sondern der gute Standardfall. Für solche Fälle sind andere Ansätze näher am Bedarf, ebenso bei dauerhaften Verbindungen oder sehr hohen Nachrichtenmengen. In der Middleware stehen deshalb mehrere Übertragungswege nebeneinander, und die Wahl fällt je Anwendungsfall statt einmal für das ganze Haus.
Versionierung und Absicherung
Eine veröffentlichte Schnittstelle lässt sich nicht mehr still ändern, weil fremde Systeme daran hängen. Jede Änderung braucht deshalb entweder Abwärtskompatibilität oder eine neue Version. Zu einer RESTful betriebenen Schnittstelle gehören außerdem Authentifizierung, Begrenzung der Aufrufzahl und Protokollierung, damit im Zweifel nachvollziehbar bleibt, wer wann welche Daten geholt hat. Wo mehrere Schnittstellen zusammenlaufen, übernimmt ein API-Gateway diese Aufgaben zentral, statt sie in jeder Anwendung erneut zu bauen. Das lohnt sich ab der dritten oder vierten Schnittstelle, vorher überwiegt der Aufwand für den zusätzlichen Baustein.
Aktuelle Themen