Zum Inhalt springen

Externe RESTful Webservices ansprechen mit Extbase

Erstellt am 3. August 2012 · 2 Antworten · letzte Antwort am 10. August 2012

Tags: Frage

Typo3Cuckoo ·

Hi,

von einer TYPO3 Webseite (Version 4.7.2) aus möchte ich auf externe Webservices zugreifen und Daten abfragen. Die externen Webservices sind im Grunde Webseiten mit einer eigenen API zum Datenaustausch. Die API basiert auf REST.

Wer REST nicht kennt -> http://www.25hoursaday.com/weblog/2008/08/17/ExplainingRESTToDamienKatz.aspx

REST ist die Alternative zu SOAP und, soweit ich gelesen habe, die weitaus konformere und modernere Methode um Daten zwischen Webanwendungen auszutauschen.

In TYPO3 soll das ganze mittels einer in Extbase programmierten Extension ablaufen. Ich habe im Extbase Extensionverzeichnis (/typo3_src/typo3/sysext/extbase/Classes/MVC/Web/) einige Klassen gefunden, welche mich vermuten lassen, dass REST in Extbase implementiert ist.

Die Kommunikation zweier Webanwendungen via REST basiert ja hauptsächlich auf aussagekräftigen und eindeutigen URIs und dem passenden HTTP Header Befehl (GET, POST, PUT, DELETE).

Eine URI könnte wie folgt aussehen:

https://externer-webservice.de/api/rest/user/123

Schickt man diese Anfrage mittels HTTP GET an den Webservice, erhält man den Datensatz eines Benutzers mit der UserID 123. Mit Javascript könnte man diese Anfrage ganz einfach per Ajax (XMLHttpRequest) abschicken.

Meine eigene Extension (bzw. Extbase an sich) muss REST also gar nicht wirklich können, weil die Anfragen von meiner Webseite aus gehen und nicht Anfragen an meine Webseite gestellt werden. Ich müsste also lediglich die URIs zusammenbauen und dann einen "HTTP Request" an den externen Webservice senden. Zurück bekomme ich dann XML, JSON, etc. und das lässt sich ja in PHP problemlos verarbeiten.

Hat sich damit schon mal jemand auseinandergesetzt und kann vielleicht ein paar hilfreiche Infos zum Thema Extbase + REST beitragen?

Unbekannter Benutzer ·

Ich würde mir entsprechende Models bauen die die abgerufenen Daten abbilden und einen Service oder vielleicht sogar ein Repository welche dann den REST Service abfragen die erhaltenen Daten in das Model mappen und zurück geben. Dann hast du das vom Rest der Extension recht gut abgekapselt.

Typo3Cuckoo ·

Hi,

danke für deine Antwort.

Genau, die Abbildung der erhaltenen Daten als Domain Models würde ich auch so machen (ist ja einer der Grundpfeiler von MVC 😉).

Davon ausgegangen, dass ich die Daten aus dem externen Webservice nicht dauerhaft in die TYPO3 DB speichere: macht da ein Repository überhaupt Sinn? Oder kann ich beides gleichermaßen nutzen?

Kennst du vielleicht Beispiele zu diesem Thema?