REST – Einführung in die API Erstellung

REST Operationen

Das HTTP-Protokoll kennt folgende für uns relevante Methoden. Daraus abgeleitet ergeben sich die CRUD Operationen. Wichtig ist, dass eine 1:1-Zuordnung erfolgt und wir nicht verschiedene Aktionen für die selbe Methode anbieten.

HTTP Methode CRUD Operation
GET Datensatz abrufen (read)
POST neu anlegen (create)
PUT aktualisieren (update)
DELETE löschen (delete)

Abrufen von Daten – GET

Ein entsprechendes cURL-Request würde so aussehen:

Unser MVC behandelt die Routen der API natürlich auch nicht anders als die Anfragen eines Browser. Wir landen also im UserController. Der sieht noch recht unspektakulär aus:

Der hier genannte ApiController ist als Basisklasse für alle weiteren Controller unserer API gedacht. Wir werden ihn später noch mit Leben füllen, bis hierhin ist es allerdings eine leere Klasse:

Die Antwort der API auf unser cURL Request sieht dann in etwa so aus:

Der Client erfährt über den Status-Code, dass die Anfrage erfolgreich bearbeitet wurde und über den Content-Type, dass wir JSON-Format schicken.

Bei einer API arbeiten wir verstärkt mit den Header Feldern, wie wir auch unter Fehlerbehandlung noch sehen werden.





Anlegen und Aktualisieren – POST und PUT

Die beiden unterschieden sich nicht viel. Sie schicken beide die neuen Daten als JSON mit. PUT bezieht sich dann noch auf einen vorhanden Eintrag und enthält somit dessen id.

Unser UserController wird also entsprechend mit einer create() Methode für POST Anfragen und einer update() Methode für PUT Anfragen erweitert:

Eine Besonderheit gibt es hier zu beachten:

Wir kennen alle $_GET und $_POST, aber es gibt kein $_PUT oder $_DELETE. Wir müssen also an dieser Stelle auf die Rohdaten zugreifen.

Die Antwort bei PUT ist relativ egal. Hier genügt der Statuscode 200 um dem Partner mitzuteilen, dass alles glatt gegangen ist. In der Praxis wird häufig die gleich Antwort wie bei POST erzeugt.

Die Antwort für POST Anfragen muss die von uns vergebene ID des neuen Benutzers mitliefern, da sie der Partner noch nicht kennt, aber für nachfolgende Anfragen benötigt.


Löschen eines Datensatzes – DELETE

Schließlich müssen wir manche Datensätze auch wieder löschen. Das Request sieht dem einer GET-Anfrage sehr ähnlich.

Wie der UserController hier ausieht, dürfte jedem klar sein.

Als Antwort senden wir bei einem DELETE nur den Status Code 200.


Weiter mit Fehlerbehandlung