REST-basierte Schnittstellen mit dem Symfony-Framework implementieren: Web Services leicht gemacht
REST-basierte APIs spielen in den letzten Jahren eine immer wichtigere Rolle im Web 2.0. Mit Hilfe einer derartigen Schnittstelle können Anbieter von Webdiensten anderen Anwendungen Daten in kontrolliertem Umfang bereit stellen und sich auf diese Weise Zielgruppen jenseits der eigenen Website erschließen. APIs sind so zu einem sehr wichtigen Erfolgsfaktor geworden – man denke nur an Twitter oder Facebook und deren Ökosystem von Third-Party-Applikationen.
Mit Hilfe des Symfony-Frameworks [1] lassen sich derartige APIs auf Basis von REST [2] sehr effektiv umsetzen. Dies lässt sich am besten anhand eines beispielhaften Anwendungsfalls verdeutlichen: Ein fiktiver Buchhändler stellt eine Schnittstelle bereit, über den sich Informationen zum Angebot abfragen lassen und mit der Verleger mit Hilfe eines dedizierten Clients neue Bücher direkt in der Datenbank des Händlers speichern können.
Die Grundlagen von REST
Eine REST-basierte Schnittstelle besteht aus Ressourcen, die durch URIs adressierbar sind und in verschiedenen Repräsentationen dargestellt werden können. Ressourcen sind Informationen, die eigenständig referenziert werden sollen, beispielsweise Texte, ein Benutzerprofil oder eine Suchergebnisseite. Deren Repräsentation erfolgt meistens im XML-Format, da dieses Format die gewünschte Interoperabilität zwischen verschiedenen Systemen oder Plattformen noch am besten sicherstellen kann. Andere Formate wie JSON sind aber ebenfalls denkbar. Ressourcen lassen sich, wie auch im Web, miteinander verlinken.
Der Zugriff auf die API erfolgt ganz einfach durch das HTTP-Protokoll. Die verschiedenen Methoden des Protokolls codieren die Operationen auf der Anwendungsebene. Wird beispielsweise per GET auf eine Ressource zugegriffen, weiß der Server, dass ein Lesevorgang durchgeführt werden soll – derselbe Request mit der DELETE-Methode würde die Ressource hingegen löschen (mehr dazu unter [3] ).
Tools zum Testen von REST-APIs |
REST-basierte Schnittstellen lassen sich nicht direkt im Browser entwickeln oder testen, da sich die HTTP-Methoden für den Request nicht festlegen lassen und auch kein direkter Zugriff auf weitere Parameter des HTTP-Requests besteht. Abhilfe schafft das Programm „RESTClient“ (http://bit.ly/RESTClient) oder die Firefox-Erweiterung „RestTest“ (http://bit.ly/RESTTest). |