RestAPI in TYPO3 umsetzen – welche Extension nutzen?

Wer sein TYPO3 Projekt um eine eigene RESTApi Schnittstelle erweitern möchte, muss das nicht zwingen „von Grund auf“ selbst machen. Im TYPO3 Repository (TER) findet man einige Extensions, die als solide und gut erweiterbare Grundlage dienen können.

Da wir vor wenigen Tagen unsere Extension „nnrestapi“ im TER veröffentlicht haben, wollten wir einen kleinen Vergleich der Lösungen hier zeigen – jede der Lösungen hat Vor- und Nachteile und die Entscheidung für die „richtige“ TYPO3 RestApi-Extension ist am Ende auch eine Frage der persönlichen Vorlieben und Anforderungen an das Projekt.

In dieser Gegenüberstellung vergleichen wir einige der gängigen „Herausforderungen“ vor der jeder Entwickler steht, wenn er in der Umsetzung eines JSON-basierten REST Servers ist, der als Basis TYPO3 nutzt.

Häufig sind das:

  • Die Extension sollte alle gängigen HTTP-Request-Types unterstützen (auch PUT, PATCH und DELETE)
  • Das Routing sollte entweder möglichst standardisiert sein – oder zumindest flexibel konfigurierbar
  • Die API sollte problemlos Domain-Models inkl. Relationen in JSON konvertieren können
  • Die API sollte aus dem empfangenen JSON Modelle erzeugen (und mergen / „PATCH“) können
  • Authentifizierung sollte möglich sein, Endpoints müssen sich vor öffentlichen Zugriff schützen lassen
  • Datei-Uploads sollten möglich sein
  • Unterstützung von Mehrsprachigkeit wäre optimal

Die TYPO3 Rest Api Extensions im Vergleich

Bei der Auswahl beschränken wir uns nur auf Extensions, die im TER unter dem Suchbegriff „REST“ auffindbar waren (Ausnahme: sg_rest ist nur über github verfügbar) und die eine aktuellere Version von Typo3 (min. Version 9) unterstützen. Wir kamen so zu folgender Liste:

EXT:rest REST
https://extensions.typo3.org/extension/rest

EXT:t3api T3api
https://extensions.typo3.org/extension/t3api

EXT:nnrestapi TYPO3 Rest Api
https://extensions.typo3.org/extension/nnrestapi

EXT:restler restler
https://extensions.typo3.org/extension/restler

EXT:routes Extbase YAML Routes
https://extensions.typo3.org/extension/routes

EXT:app_routes App Routes
https://extensions.typo3.org/extension/app_routes

EXT:sg_rest SG REST
https://gitlab.sgalinski.de/typo3/sg_rest

Disclaimer

@Alle_Autoren der oben genannten Extensions: Aufgrund teilweise sehr knapper Dokumentationen fiel uns bei dem folgenden Vergleich teilweise schwer, alle Features vollständig zu entdecken und verstehen. Wir bitten um Nachsicht – oder noch besser: Um Korrektur! Sollten wir in dem Vergleich grobe Fehler gemacht haben, schreibt uns bitte einen Kommentar! Ziel dieses Beitrages ist es nicht, für unsere eigene Extension „Werbung“ zu machen, sondern die TYPO3 Restful Api Extensions möglichst objektiv zu vergleichen. Und ohne die andere Extensions als Vorbild und Orientierungspunkte wären wir an vielen Stellen bei unserer eigenen Entwicklung anders oder falsch „abgebogen“. Also ein dickes „DANKE“ an dieser Stelle an die gesamte TYPO3 Community!

Vergleich der TYPO3 Restservice Extensions


Dokumentation

Der Disclaimer leitet wunderbar über zum ersten Punkt: Der Dokumentation. Da die Implementierung eines Restful Services in TYPO3 auf sehr unterschiedlich Arten lösbar ist, macht das eine gute und verständliche Dokumentation um so wichtiger.

Weiter zur nächsten Seite

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.