Seit Monaten, wenn nicht Jahren, wird bei jeder neuen Version von WordPress auch über die REST-API gesprochen. Letzte Woche war es mal wieder soweit als WordPress 4.7. veröffentlicht wurde. Außer einem neuem Theme und vielen kleinen Detailverbesserungen war wieder die REST-API ein Thema.
Sie hat neue Endpunkte erhalten!
Aha, denkt sich der gemeine WordPress User!
Dieser Beitrag wendet sich an alle nicht REST-API Spezialisten und soll für Aufklärung sorgen, worum es eigentlich geht.
Das sagt Wikipedia zu Thema REST:
REST ist eine Abkürzung für „Representational State Transfer“. Die Bezeichnung „Representational State Transfer“ soll den Übergang vom aktuellen Zustand zum nächsten Zustand (state) einer Applikation verbildlichen. Dieser Zustandsübergang erfolgt durch den Transfer der Daten, die den nächsten Zustand repräsentieren. Der Zweck von REST liegt schwerpunktmäßig auf der Maschine-zu-Maschine-Kommunikation …
Das sagt Wikipedia zu Thema API:
Eine Programmierschnittstelle, genauer Schnittstelle zur Anwendungsprogrammierung, häufig nur kurz API genannt (englisch application programming interface, wörtlich ‚Anwendungsprogrammierschnittstelle‘), ist ein Programmteil, der von einem Softwaresystem anderen Programmen zur Anbindung an das System zur Verfügung gestellt wird.
Wenn dir immer noch nicht ganz klar ist worum es geht, keine Sorge, du bist nicht allein.
Wozu benötigt der Mensch eine REST-API in WordPress?
Hier ein paar Beispiele um sich dem Thema zu nähern. Außer der freien WordPress.org Software gibt es noch die Firma Automattic, die das kommerzielle WordPress.com betreibt und bereits seit längerem eine eigene REST-API in Ihren Services nutzt. Selbst gehostete WordPress.org Sites können dort integriert werden, wenn sie auf WordPress.com registriert und über ein spezielles Plugin (JetPack) „verbunden“ sind.
Calypso (WordPress.com Desktop Apps)
Calypso ist eine Desktop App für MacOS, Windows und Linux. Es stellt eine einheitliche Oberfläche dar um viele WordPress Sites zu verwalten. Die Kommunikation zwischen den WordPress Sites und Calypso findet über die WordPress.com REST-API statt. Calypso ist in JavaScript geschrieben, ist Open Source Software und stellt einen Client für WordPress Sites dar.
WordPress.com
Etwas später als Calypso wurde die neue Verwaltung auf WordPress.com vorgestellt, die auf der gleichen Technik wie Calypso basiert aber komplett im Browser läuft. Es muss also nichts extra installiert werden. WordPress.com ersetzt das komplette WordPress.org Website Dashboard.
WordPress.com Mobile Apps
Für Mobiltelefone gibt es die iOS und Android Apps, die es ebenfalls ermöglichen, selbst gehostete WordPress Sites zu bedienen. Hier findet ein Mix aus der, bereits seit WordPress 1.5 existierenden, XML-RPC Schnittstelle und der neuen WordPress REST-API statt.
Alle Projekte nutzen die WordPress.com REST-API, ersetzen den klassischen WordPress.org Administrationsbereich (Dashboard) und zeigen was prinzipiell mit dieser Technik möglich ist.
Nach und nach wurde nun neben der WordPress.com REST-API auch eine WordPress.org REST-API entwickelt. Damit kann jeder Anwendungen erstellen, die nicht mit einem speziellen Plugin mit WordPress.com verbunden werden müssen sondern unabhängig davon funktionieren. Auch die Wahl der Programmiersprache ist völlig frei.
Das ist das „Ding“ mit der REST-API.
Sie eröffnet neue Möglichkeiten im Front- und Backend Bereich. Außerdem ermöglicht sie das Verschmelzen von vielen WordPress Sites zu einer (neuen) Anwendung.
Ein einfaches Anwendungsbeispiel
Ich betreibe ein Blogging Projekt, bei dem jeder Teilnehmer einmal die Woche auf seinem eigenen Blog einen Artikel schreiben muss. Am Ende der Woche werden die Artikel gesammelt und auf einer Übersichtsseite ausgegeben (Weekly blog posts). Das Sammeln und Eintragen der Daten erfolgt automatisch mit einem Python Script. Das Script nutzt die „alte“ XML-RPC Schnittstelle von WordPress und erzeugt einen neuen Artikel pro Woche. Dazu wird kein zusätzliches Plugin benötigt.
Mit der neuen REST-API liesse sich eine Anwendung schreiben (Iron Blogger App), die on the fly die Daten zusammenstellt, schick darstellt und Interaktionsmöglichkeiten bietet. Da das ohne Zusatz Plugins funktioniert, hat jede installierte WordPress Site die Funktionalität bereits eingebaut und kann genutzt werden.
Praxis
Nachdem die Dimensionen abgesteckt sind, will ich ein kleines Beispiel anhand des NOVATRENS Blogs zeigen. Ruft einfach im Browser mal http://blog.novatrend.ch/wp-json auf. Das Ergebnis sieht interessant aus:
Die Site bietet die folgenden Namespaces (API’s) an:
- oembed/1.0
OEmbed ist ein Format, das eine eingebettete Darstellung einer URL auf Websites von Drittanbietern ermöglicht. Wenn du einen Link von Sites wie YouTube oder Flickr in den Editor ziehst, sorgt dieses Format dafür, das ein Vorschaubild mit Text und Link angezeigt wird. - jetpack/v4
JetPack ist das WordPress Plugin, dass die WordPress.com REST-API zur Verfügung stellt. Wir nutzen es, da wir die WordPress.com Apps ebenfalls nutzen. - wp/v2
Da ist sie nun!
Die standardmässige WordPress.org REST-API
Hier sind all die neuen Sachen zu finden!
Alle Blog Posts sehen
Wenn du nun http://blog.novatrend.ch/wp-json/wp/v2/posts im Browser aufrufst, siehst du die Startseite unseres Blog in maschinenlesbarer Form.
Du kannst natürlich auch einen einzelnen Post aufrufen
http://blog.novatrend.ch/wp-json/wp/v2/posts/1423
Dieser Aufruf im Browser entspricht einen GET Kommando.
GET /wp/v2/posts/<id>
Mit der entsprechenden Berechtigung könntest du ihn auch löschen
DELETE /wp/v2/posts/<id>
oder einen neuen Eintrag erstellen
POST http://demo.wp-api.org/wp-json -d '{"title":"My New Title"}'
Auf diese Art kannst du alle Informationen, die unser Blog bietet maschinell auslesen und, so wie du willst, wieder zusammenbauen. Ich lasse die urheberrechtlichen Zusammenhänge mal außen vor :).
Du kannst dich auch gegenüber dem Blog als berechtigte Person authentifizieren und Änderungen vornehmen.
Und was ist jetzt neu in WordPress.org REST-API?
Genau das! Es gibt jetzt mehr Endpunkte und mehr Möglichkeiten. Konkret sind Zugriffe auf Posts, Nutzer, Tags und Einstellungen möglich. Für die Aufrufe selbst verwendet man die Hypertext Application Language (HAL). Der Datenaustausch erfolgt über JSON.
Öffentliche Aufrufe als auch private Anfragen, die eine vorherige Authentifizierung erfordern sind nun ebenfalls möglich.
Hinweis: Du kannst die REST-API auch für nicht eingeloggte Besucher abschalten 🙂 https://www.kuketz-blog.de/wordpress-rest-api-unter-wordpress-4-7-deaktivieren/
Links
- REST-API WordPress.org https://developer.wordpress.org/rest-api/
- REST-API WordPress.com https://developer.wordpress.com/docs/api
- Calypso https://developer.wordpress.com/calypso/
- WordPress.com Apps https://apps.wordpress.com/
tl;dr: WordPress hat eine REST-API und damit kannst du tolle Dinge machen!
Schreibe einen Kommentar