Zum Inhalt springen

RESTful Webservices mit PHP

Webapplikationen bieten oftmals eine Schnittstelle an, über die auch Entwickler den angebotenen Service in ihren Applikationen nutzen können. Diese Webservices wurden gerne durch XML-RPC oder SOAP bereitgestellt. Doch der neue Trend ist REST.

Was ist REST?

REST steht für REpresentational State Transfer und wurde von Thomas Roy Fielding in seiner Dissertation benannt. REST benutzt URLs um Ressourcen bereitzustellen und das Hypertext Transfer Protocol um Manipulationen an diesen Ressourcen durchzuführen. Die einzelnen HTTP-Methoden werden für verschiedene Operationen genutzt dabei entspricht GET Lesen, PUT Update, POST Create und DELETE Löschen.

REST-Service in PHP – das Slim-Framework

Möchte man einen solchen REST-Service erstellen bietet sich das Slim-Framework an. Die Sourcen können bei Github gefunden werden. Der Aufbau eines Hello-World-Services ist denkbar einfach.

require 'Slim/Slim.php';
$app = new Slim();
$app->get('/hello/:name', function ($name) {
   echo "Hello $name";
});
$app->run();

Die interessante Zeile ist $app->get(). Hier wird ein Pfad und ein Parameter mit einer Funktion verknüpft. Das ganze verwendet die GET-Methode von HTTP.

Wenn man einen umfangreicheren Service anbieten will, werden weitere Methoden verwendet wie zum Beispiel PUT, DELETE, POST.

Als Beispiel sei ein Service für die Verwaltung einer Person zu nennen der so aussehen könnte:

require 'Slim/Slim.php';
$app = new Slim();
$app->get('/person/:id', function ($id) {
   // retrieve person
});

$app->post('/person', function () {
   // create person
});

$app->put('/person/:id', function ($id) {
   // update data
});

$app->delete('/person/:id', function ($id) {
   // delete data
});

$app->run();

Das Framework bietet neben der REST-Funktionalität auch noch eine Logging Komponente und alles ist mit Unittest abgedeckt.

Testen mit Chrome und FF

Um den REST-Service zu nutzen benötigt man normal einen REST-Client. Für Tests ist es natürlich überaus praktisch, wenn man die einzelnen Funktionen manuell triggern kann.

Hierfür gibt es eine Chrome Erweiterung, die den Entwickler die Methode, Header Information und Daten (bspw POST) setzen lässt.

Eine Firefox Extension gibt es auch, die ich aber bisher nicht getestet habe.

Webservice Tipp

Beim Entwerfen eines REST-Webservices sollte man gleich die Versionierung der API bedenken. So sollten Ressourcen dann bspw. über URLS wie /v1/person/1234 bereitgestellt werden.

Published inAllgemein

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close