© saicle/Shutterstock.com
RESTful-APIs mit Symfony2 realisieren

RESTful-APIs mit Symfony2 realisieren


Wer zum Beispiel Apps entwickelt und diese an eine Symfony-Applikation [1] anbinden möchte, muss eine Schnittstelle bereitstellen. Vieles spricht dafür, ein REST-API [2] zu implementieren. Dieser Artikel zeigt, wieso.

Vor allen Dingen ist ein RESTful-API sehr schlank und auf Server- sowie Clientseite leichter umzusetzen als zum Beispiel eine Schnittstelle auf SOAP- oder XML-RPC-­Basis. Ein weiterer Vorteil ist, dass ein RESTful-API auch mit JSON arbeiten kann. Auch wenn dadurch nicht alle Anforderungen des Richardson Maturity Models erfüllt werden, bietet JSON einige Vorteile. So wird in nativen Apps kein vollständiger XML-Parser, sondern nur eine vergleichsweise schlanke JSON-Bibliothek benötigt. Außerdem ist REST sehr elegant, denn es nutzt die HTTP-Methoden (in diesem Zusammenhang auch als Verben bezeichnet) und HTTP-Statuscodes voll aus, statt lediglich alle Daten über POST-Requests an den gleichen Endpunkt zu senden. Das fühlt sich nicht nur viel besser an, es hat auch direkte Auswirkungen in der Praxis. So könnte zum Beispiel ein Cache wie Varnish keinen der API-Calls zu einer SOAP- oder XML-RPC-Schnittstelle behandeln, da bei POST-Requests davon auszugehen ist, dass Seiteneffekte, wie eine Veränderung von Daten, zu erwarten sind.

Der Cache kann nicht unterscheiden, ob wir nur Daten abfragen oder auch verändern. Das macht Caching unmöglich. Anders herum ausgedrückt, kann ein RESTful-API bei Bedarf auch von einem Cache optimiert und beschleunigt werden. Mit dem FOSRestBundle [3] steht eine Lösung für Symfony bereit, mit der REST-APIs sowohl für neue als auch bestehende Applikationen sehr einfach, schnell und sauber implementiert werden können.

Das FOSRestBundle wird von den FriendsOfSymfony – einem Zusammenschluss verschiedener Symfony-Entwickler, gepflegt. Es arbeitet stabil und wurde bisher bereits mehr als 34 000-mal installiert [4]. Das FOSRestBundle selbst erzeugt nach erfolgter Installation noch kein API. Es bringt viel mehr Lösungen und Werkzeuge für verschiedene Aufgaben und Probleme, die einem Symfony-Entwickler bei der Implementierung einer REST-Schnittstelle begegnen, mit. Dazu gehört zum Beispiel ein spezieller Controller, der vom Symfony Standard Controller erbt und einige sehr praktische Methoden hinzufügt. Zudem spart auch die automatische Definition von Symfony-Routingeinträgen Zeit und Konfigurationsarbeit. Man kann ein REST-API auch nur mit der Hilfe der Symfony-Bordmittel realisieren. Dies ist jedoch umständlicher und kostet mehr ...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang