20. REST-API

REST steht für Representational State Transfer und bezeichnet ein Programmierparadigma für verteilte Systeme. Von vornherein war klar, dass sich über die REST-API WordPress komplett bedienen lassen muss. Nur dann lässt sich nämlich sicherstellen, dass Drittanbieter-Apps WordPress aus der Ferne bedienen können. Solche Tools gab es zwar auch bereits vorher. Sie nutzten aber veraltete Schnittstellen oder es wurden direkt Eigene entwickelt.

Das Einbringen der REST-API in den WordPress-Kern war nicht so ganz einfach. Die zeitlichen Vorgaben konnte man, aufgrund des großen programmiertechnischen Aufwands (und fehlender Manpower), nicht einhalten. Weswegen man entschied, den Code in zwei Schritten in den Kern zu integrieren. Der erste Teil (WP Version 4.4 bis 4.6) enthielt grundlegende Infrastruktur (mit Ausnahme eEmbed-Funktionen). Sie erlaubte es, eigene so genannte Routen anzulegen. Erst im zweiten Schritt (WP Version 4.7+) integrierte man dann auch die WordPress-internen Routen und Endpunkte dazu.

Jetzt, Mitte 2018, fehlen immer noch ein paar Dinge, die die REST-API komplettieren würden. Zum einen die Metadata-API (die aber mittlerweile fertiggestellt ist, sich aber noch nicht im Kern befindet) sowie einige spezielle Dinge, die der neue Editor (getauft „Gutenberg“) noch benötigt. Letzterer soll in Version 5.0 in den WordPress-Kern übernommen werden.

Der Zugriff auf WordPress erfolgt durch, wie oben erwähnt, die so genannten Routen, die sich über verschiedene HTTP-Anfragemethoden ansprechen lassen (GET, POST, PUT, etc.). Die URLs beginnen alle mit https://Ihre-website.com/wp-json/.

Gründe, die REST-API zu nutzen

Die REST-API in WordPress macht es richtig einfach, Daten zwischen Dritthersteller-Apps oder anderen Programmiersprachen auszutauschen. Man ist also kaum mehr an PHP gebunden, denn der Datenaustausch läuft im Prinzip über alle Sprachen und Apps, die das offene JSON-Datenformat lesen können.

Ein Beispiel wäre eine so genannte Single-Page-Application, die vollständig im Browser läuft. Dazu wird oft ReactJS oder VueJS verwendet. Die nötigen Daten können dann über die REST-API zu WordPress geschoben und von dort geladen werden.

Natürlich gibt es viele Wege, Daten in WordPress hin- und her zu senden. Eine davon ist z.B. die wp-ajax.php-Datei, die (früher) oft dazu verwendet wurde, Daten zwischen WordPress und integrierten JavaScript-Dateien auszutauschen. Sie kann man auch dazu missbrauchen, Daten an andere Apps zu senden oder diese zu empfangen. Der Programmieraufwand dürfte allerdings erheblich sein. Und warum nicht bereits vorhandenes nutzen?