Technologie

BASIC App [72%]: Best-Practices – JSON und REST im Einsatz

geschrieben von Dennis Hüggenberg

Du betreibst einen eigenen Blog mit WordPress, hast Erfahrung mit HTML5, CSS und JavaScript und wolltest eigentlich schon immer eine eigene App für deinen Blog entwickeln? Dann ist diese Kolumne genau das Richtige für dich. Heute kümmern wir uns um die Bereistellung der Daten mit Hilfe von JSON und REST. Mit der Entwicklung der BASIC App stehen wir bei 72 Prozent. // von Dennis Hüggenberg


Warum ist das wichtig?

Neben dem Design und der Bedienbarkeit stellt der Content die wichtigste Komponente deiner eigenen App dar. Der Einsatz moderner Technologien ist heutzutage genauso wichtig wie die Geschwindigkeit und die Effizienz bei der Umsetzung deines Projektes. Daher werden wir uns in diesem Artikel mit den richtigen WordPress-Plugins, REST-Schnittstellen und JSON  auseinander setzen. 

Mehr zu diesem Thema


In den letzten Wochen ging es in meiner Kolumne um die Themen Projektmanagement, Design, Prototypenentwicklung und weiteren, spannenden Themen. Heute stehen bei uns die Daten im Vordergrund. Am Ende des Beitrages bist du in der Lage, die Daten aus deinem eigenen WordPress-Blog für deine eigene App bereitzustellen. Dazu werfen wir einen Blick hinter die Kulissen des WordPress-Plugin WP-REST-API, beschäftigen uns mit JSON und versuchen diese Dinge dann mit Ionic zusammen zu bringen.

Bereitstellung der Daten

Eine der ersten Fragen, die bei fast jedem Projekt gestellt wird, ist die Frage nach den Daten. Es gibt sehr viele Wege, auf die Daten eines auf WordPress basierenden Blogs zuzugreifen. In diesem Beispiel werden wir die Daten via Representational-State-Transfer-Schnittstelle (REST) im JavaScript-Object-Notation-Format (JSON) bereitstellen. Das hört sich auf den ersten Blick zugegebener Maßen erst einmal sehr kryptisch an, aber du wirst sehen, dass es gar nicht so schwer ist.

Die Aufbereitung der Daten übernimmt das Plugin WP-REST-API. Um das Plugin zu installieren meldet du dich im Backend deines WordPress-Blogs an und suchst im Plugin-Repository nach „WP-REST-API“. Hast du das Plugin erfolgreich installiert, werden dir die benötigten Daten im JSON-Format über eine URL zur Verfügung gestellt.

Ein Beispielaufruf einer URL, um alle Blog-Posts auszugeben, würde dann so aussehen:

http://www.meine-url.de/wp-json/posts

JSON API

JSON-Daten strukturiert darstellen

Die Darstellung der Inhalte erscheint auf dem ersten Blick sehr unübersichtlich. Um mit den Daten strukturiert arbeiten zu können, möchte ich dir den JSON Online Editor ans Herz legen. Mit Hilfe dieses großartigen Werkzeugs kannst du dir die Inhalte in einer geordneten Objekt-Struktur ansehen. Dazu muss du einfach nur den gesamten Inhalt deiner URL kopieren und in das Tool einfügen:

JSON

Man kann erkennen, dass mit Hilfe des Plugins ein Array mit 12 Objekten zurückgegeben wird. Jedes Objekt stellt dabei einen Post in deinem Blog dar. In einem der Objekte sind alle Informationen eines Beitrages enthalten. Werfen wir doch einmal einen Blick auf die Struktur eines einzelnen Objektes:

JSON REST API

Fazit & Ausblick

Mit dem Plugin WP-REST-API bist du in der Lage, die Daten deines eigenen WordPress-Blogs für deine eigene App binnen Minuten bereit zu stellen. Mit Hilfe des JSON Online Editors kannst du die JSON-Streams strukturiert begutachten. Damit wären die wichtigsten Voraussetzungen für das Einbinden der Daten in deine App erfüllt. Im kommenden Beitrag gucken wir uns an, wie wir das Ionic-Framework mit diesen Daten verheiraten. Den Prototypen werde ich bis zum kommenden Donnerstag aktualisieren. Die Entwicklung der App schreitet voran. Aktuelle News dazu gibt es auch auf meinem Twitterkanal @hueggenberg.

Über den Autor

Dennis Hüggenberg

Dennis Hüggenberg ist Projektleiter und Hobby-Entwickler. Kleine, raffinierte, mit schicken Oberflächen versehenen Applikationen faszinieren ihn. Freunde & Familie bilden das Zentrum seines Offline-Daseins.

4 Kommentare

  • Verzeihe mir den Seitenhieb, aber die Vorlage muss ich nutzen: Wieso fehlt denn BASIC App [68%] in der Liste bisheriger Artikel dieser Kolumne? Ist man selber nicht ganz zufrieden? 😉

    Nicht böse sein, aber über die von Tobias angekündigten Antworten zu meinen Fragen würde ich mich schon noch freuen.

    Aber jetzt zu diesem Beitrag: Euch ist schon klar, dass WP Rest API soweit keine Authentifizierung vorsieht, ja? Jeder der dieses Plugin installiert hat stellt also alle seine Inhalte in optimaler maschinenlesbarer Form zur Verfügung. Ihr müsst euch also nicht wundern, wenn eure Inhalte bald in Clone-Blogs auftauchen.

    Gerade weil ihr hier von „Best-Practice“ sprecht finde ich das sehr gefährlich. Bitte seht es mir nach, aber ich habe immer mehr den Eindruck als wenn du Dennis nicht so ganz weißt worüber du schreibst bzw. noch am Anfang deiner App-Entwickler-Karriere stehst (an sich nicht schlimm, da waren alle Entwickler einmal — nur haben wir anderen eben nicht gleich unser anfängliches Wissen als Best Practice-Empfehlung in die Welt posaunt). Gerade so etwas wie den eigenen Inhalt zu schützen, also sicherzustellen dass er nur bei der vorgesehen Verwendung (eben in der eigenen App) nutzbar ist, ist doch die eigentliche Schwierigkeit, die es zu lösen gilt.

    Man stelle sich vor die ganzen kostenpflichtigen digitalen Zeitungen würden es so machen wie du es hier empfiehlst.

    Die Aufbereitung der Daten übernimmt das Plugin WP-REST-API. Um das Plugin zu installieren meldet du dich im Backend deines WordPress-Blogs an und suchst im Plugin-Repository nach „WP-REST-API“. Hast du das Plugin erfolgreich installiert, werden dir die benötigten Daten im JSON-Format über eine URL zur Verfügung gestellt.

    Ob man so etwas einfach dahin schreiben sollte ohne zu erwähnen, dass die letzten 3 Updates des Plugins in den letzten 5 Monaten fast ausschließlich kritische Sicherheitslücken geschlossen haben weiß ich auch nicht. Vermutlich ist das dem Autor noch nicht einmal bekannt.

    Es komplementiert sich bei mir der Eindruck, dass diese ganze Kolumne recht oberflächlich ist und mit euren anderen Kolumnen wie „Boris berät“ überhaupt nicht mithalten kann. Schade!

    PS: Ich würde mich trotzdem über die versprochenen Antworten freuen 😉

    • Hallo Mark,

      ich möchte mich erst einmal bei dir entschuldigen, dass die Antwort auf die Anregung von Tobias hin, bis heute gedauert hat. Diese werde ich gleich nachreichen. Lass mich aber erst auf deinen aktuellen Kommentar antworten:

      Ich fange einmal mit dem brisanten Teil deines Kommentares an:

      Es stimmt. WP-REST-API stellt alle bereits öffentlich-verfügbaren Inhalte im JSON-Format zur Verfügung. Um Zugriff auf weitere Inhalte und Funktionen (wie das Anlegen oder Löschen eines Beitrages) zu gelangen, bedarf es einer Authentifizierung.

      Wie man die Authentifizierung für nicht öffentliche Inhalte realisieren kann, findet man hier:

      http://wp-api.org/guides/authentication.html

      Die Inhalte einer Website oder eines Blogs sind übrigens auch public, wenn du diese als RSS-Feed zur Verfügung stellst. Der Aufwand, diese Daten weiter zu verarbeiten, oder wie du es formulierst, in einem weiteren Medium auszusteuern ist in etwa der gleiche.

      Ich weiß nicht, ob ich gleich zu den großen, kommerziellen Zeitungen schielen würde. Mir reicht der Blick zu den erfolgreichsten Blogs in Deutschland. Hier einige Beipsiele, die im RSS-Feed vollständige Artikel aussteuern (was ich persönlich auch sehr gut finde):

      http://feeds.feedburner.com/stadt-bremerhaven/dqXM?format=xml

      http://feeds2.feedburner.com/spreeblick/feed

      Schaut man sich im Web etwas genauer um, wird man viele ähnliche Ansätze für die Einbindung von Daten aus einem WordPress-Blog finden. Ich habe hier einmal ein paar mitgebracht:

      http://reactor.apppresser.com/blog/wordpress-api-ionic-app/

      http://wphc.julienrenaux.fr/

      http://t3n.de/news/wordpress-datenquelle-nutzt-622103/

      Wenn du aber andere, gute Ansätze kennst, dann freue ich mich darauf, dass du diese hier mit uns teilst.

      Jetzt zum Plugin:
      Es stimmt. die letzten Updates haben sich hauptsähclich mit dem Fixen von Bugs und Security-Themen befasst. Das Web entwickelt sich weiter – neue Gefahren kommen hinzu. Es ist fast schon eine Erwartungshaltung meinerseits an ein gutes Plugin, dass diese Gefahren gefixt werden. Vielleicht wolltest du darauf anspielen, dass keine neuen Funktionen mehr hinzu gekommen sind. Dazu folgendes: Für die WP-Version 4.3+ liegt liegt aktuell die Version 2 beta 5 vor. Weiterhin: Mein persönlicher Verdacht ist, dass das Plugin bereits alle Funktionen von WordPress abdeckt und deswegen keine neuen Features mehr dazu gekommen sind. Zumindest lässt die ausführliche Dokumentation auf nicht viel anderes schließen:

      http://v2.wp-api.org/

      Jetzt noch ein Satz, warum ich den letzten Artikel nicht mit aufgenommen habe: Ich habe versucht Artikel auszuwählen, die zum Thema passen.

      Ich freue mich auf dein Feedback und wünsche dir noch einen schönen Tag.

      Viele Grüße
      Dennis

      • Die Inhalte einer Website oder eines Blogs sind übrigens auch public, wenn du diese als RSS-Feed zur Verfügung stellst. Der Aufwand, diese Daten weiter zu verarbeiten, oder wie du es formulierst, in einem weiteren Medium auszusteuern ist in etwa der gleiche.

        Mein Punkt war, dass ich bezweifle dass jedem der das Plugin einsetzt bewusst ist, dass darüber seine Inhalte maschinenlesbar abgegriffen kann. Wenn einem dieser Umstand bewusst ist und man damit kein Problem hat weil man wie du gezeigt eh schon seine Inhalte vollständig in Feeds bereitstellt, fein. Es geht mir nur um die bewusste Entscheidung.

        Die WP-Rest API ist unbrauchbar wenn es darum geht als Endpunkt für kontrollierte Anwendungsfälle zu dienen. Es wäre ein Traum wenn auch alle App-Nutzer sich registrieren würden, aber dies ist in der Realität oftmals eine Hürde. DIE Lösung habe ich auch nicht.

        Vielleicht wolltest du darauf anspielen, dass keine neuen Funktionen mehr hinzu gekommen sind.

        Nein. Fehler passieren, ja. Es ist schön, wenn Fehler schnell behoben werden, ja. Es gibt aber eine Reihe von Fehlern die nicht passieren dürfen. #youhadonejob

        Danke für deine Antworten.

        • Hallo Mark,

          danke noch einmal für den Hinweis. Stimmt. Sensibilisieren ist in solchen Fällen immer der richtig Ansatz.

          Richtig. Es wäre ein Träumchen, wenn sich jeder registrieren würde. Dann hätte man die Community geschlossen zusammen. Aber das Leben ist nun einmal kein Ponnyhof 😉

          Bis zum nächsten Mal & viele Grüße
          Dennis