RESTful API
Representational State Transfer (REST) beschreibt einen Software-Architekturstil, der eine Reihe von Bedingungen definiert, die für M2M-Kommunikation (Embedded Systems) entwickelt wurde und insbesondere bei die Erstellung von Webservices verwendet werden. REST-API oder REST-WebAPI basiert auf vorhandenen Webtechnologien. Dabei wird das HTTP-Protokoll mit dessen Methoden unterstützt.
Die vier wichtiges HTTP-Methoden
- GET fordert die angegebene Ressource vom Server an.
- POST fügt eine neue (Sub-)Ressource unterhalb der angegebenen Ressource ein und gibt in der Regel einen Link auf die neue Ressource zurück. POST wird aber auch häufig verwendet, wenn keine andere Methode geeignet erscheint, die Operation auszuführen (z.B. Benutzeranmeldung)
- PUT legt die angegebene Ressource an oder verändert diese, falls sie bereits existiert..
- DELETE löscht die angegebene Ressource.
Die Ressourcen können dabei alles sein, wie z.B. HTML, XML, Bild oder JSON. Heute ist JSON das am häufigsten verwendete Format bei Webdiensten.
Die Bezeichnung „Representational State Transfer“ meint den Übergang vom
aktuellen Zustand zum nächsten Zustand (state) einer Anwendung, der durch den Transfer der
Daten erfolgt. Dabei speichern weder Server noch Client spezielle Zustandsinformationen zwischen zwei Nachrichten, wie z.B. "open" oder "closed". Das Protokoll ist damit zustandslos (engl.: stateless).
Die REST-Technologie wird heute der robusteren SOAP-Technologie (Simple Object Access Protocol) vorgezogen, da REST weniger Bandbreite benötigt, einfach und flexibel ist.

Beispiel
GET-Request ruft der Kontoinformationen im JSON-Format ab:
GET /accounts/123abc HTTP/1.1 Host: bank.example.com Accept: application/json ...
Die Antwort bei einem ausgeglichenen Konto kann dann wie folgt lauten:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: ...
{
"account": {
"account_id": "123abc",
"balance": {
"currency": "EUR",
"value": 100.0
},
"links": {
"deposit": "/accounts/123abc/deposit",
"withdraw": "/accounts/123abc/withdraw",
"transfer": "/accounts/123abc/transfer",
"close": "/accounts/123abc/close"
}
}
}
JSON-Antwort bei ausgeglichenem Konto
Die beinhaltet vier mögliche Links: deposit (einzahlen), withdraw (abbuchen), transfer (überweisen) und close
(kündigen).
Wenn das Konto aber überzogen ist, kann nur noch Geld auf das
Konto eingezahlt werden deposit. Die Antwort bei
einem überzogenen Konto könnte z.B. sein:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: ...
{
"account": {
"account_id": "123abc",
"balance": {
"currency": "EUR",
"value": -100.0
},
"links": {
"deposit": "/accounts/123abc/deposit"
}
}
}
JSON-Antwort bei überzogenem Konto
REST bedingt dabei eine Vereinheitlichkeit der Programmierschnittstellen APIs und somit ihre einfache Nutzung. Eine API (engl. application programming interface) nennt man dabei Software-Teile, die anderen Programmen zum gemeinsamen Informationsaustausch bereitgestellt werden. Um als Programmierer die API auf benutzen zu können, ist muss ein Dokumentation der Schnittstellen-Funktionen zugänglich sein.
https://de.wikipedia.org/wiki/Representational_State_Transfer (11.10.2022)