API

- Lesezeit: 3 Minuten / ganze Rubrik: 47 Minuten -

API

Eine Schnittstelle zur Programmierung von Anwendungen wird als „API“ (Application Programming Interface) bezeichnet. Also eine Programmierschnittstelle. Bei einer „REST API“ handelt es sich aber nicht um eine übriggebliebene Schnittstelle, sondern auch „REST“ ist eine Abkürzung für „Representational State Transfer“. „REST API“ ist quasi eine Bezeichnung dafür, wie die Kommunikation zwischen Client und Server (also zwei Maschinen) typischerweise aussieht/abläuft.

… wer noch mehr Theorie nachlesen möchte, ist bei Wikipedia (extern) und friendventure.de - was ist REST API? sehr gut aufgehoben - aber wie sieht das technisch aus, wenn die Jugend von heute Client-Server-Dienste baut, und dafür gern HTTP verwendet?

Praxisbeispiel „Bestellsystem im Café“:

Die Bedienung nimmt eine Bestellung auf, ihre App sendet dann z.B. folgende JSON-Daten per HTTP an https://das-cafe.de/api/bestellung:

{"id": 12345,
 "table": 42,
 "items": [
 { "name": "cappucino",
   "decaf": true},
 { "name": "cheesecake",
   "cream": false}]}

Typischerweise antwortet der Server dann mindestens mit “ok” oder “fehlgeschlagen, weil […]“. Je nach Dienst (z.B. Matrix) kommen ggf. auch weitere (JSON)-Daten zurück.

Am Ende zahlt man und die App sendet entsprechende Daten an https://das-cafe.de/api/bezahlung.

Auf Seite des Webservers gibt es also Code, der unter /api/bestellung und /api/bezahlung jeweils JSON-Daten mit bestimmten Feldern erwartet und schlaue Dinge damit tut. Das ist vergleichbar zu Funktionen einer Bibliothek in irgendeiner Programmiersprache. Die “API” (= Schnittstelle) einer solchen Bibliothek wäre, daß sie die Funktionen bestellung(42, ["cappucino", ...]), bezahlung(42)etc. anbietet. Wenn der Aufruf stattdessen wie im Café per HTTP passiert, nennt man’s “REST-API”. Der Anbieter der Café-Lösung bastelt einnen Dienst, denkt sich einne REST-API aus und dokumentiert sie für App-Entwickler auf der Anbieter-Webseite.

Anders als bei Schnittstellen (APIs), die quasi jeder für sein Produkt und seine Software beschreiben und veröffentlichen kann, ist das bei international standardisierten Protokollen wie sie von der IETF erarbeitet werden und dann publizierte Internetstandards sind.