knuspermagier.de
Since 2005.

Drei Abende mit GraphQL

Vor ein paar Wochen berichtete ich noch voller Vorfreude, dass ich mich endlich mit GraphQL beschäftige — am Beispiel des Adminpanels für Blogchain!

Nun kann ich voller Stolz berichten, dass das Adminpanel fertig, oder sagen wir, benutzbar, ist. Allerdings läuft die API jetzt doch ganz normal über eine REST-Schnittstelle.

“Warum?”, fragt ihr euch. Ist GraphQL dem werten Herrn Programmierer wieder nicht recht? Ist er so sehr gegen Facebook, dass es so sehr hasst wie React?


Naaaaja. Ich hab, um ehrlich zu sein, schon am Anfang gedacht, dass es wahrscheinlich ziemlich dumm ist, eine so komplexe Technologie, die man nicht mal eben so verstanden hat, in dieses Side-side-side-Projekt einzubauen, welches möglichst so laufen soll, dass es sehr wenig Zeit beansprucht, einfach funktioniert und auch in Zukunft leicht wartbar ist.

Bei GraphQL (und der Integration ins Frontend über vue-apollo) war es nun so, dass ich mich erst sehr freute, über die ganzen Sachen, die man sofort schön findet:

  • Strenge Typisierung von Parametern
  • “Automatisch” erstellte Dokumentation
  • Geile Schema-Files
  • Apollo hat ne Menge Sachen drin, die alles ziemlich magisch erscheinen lassen

Nach dem ersten Abend war ich also ziemlich zufrieden. Der Abend danach, der zeitlich gesehen wirklich auch innerhalb von 24 Stunden folgte, war schon gespickt mit etwas Frust. Ich musste viel nachlesen. Wie macht man File-Uploads, wie macht man dies, wie krieg ich jetzt das Backend wieder schön gemacht, wenn ich eine Schema-File benutzen will. Warum sind die Queries und Mutations so super viel Schreibaufwand.

Trotzdem schaffte ich alles, was ich mir vorgenommen hatte und legte die Sache beiseite.

Einige Monde später, tatsächlich sogar eine ganze totale Mondfinsternis (dazu später mehr), schaute ich mir den ganzen Scheiß wieder an und wollte noch eben einen der letzten Todo-Punkte angehen: Authentifizierung. Nicht übel für ein Adminpanel, oder?

Mittlerweile hatte ich natürlich komplett vergessen, wie dieser ganze Apollokram funktioniert, und ich hatte auch nicht mehr so richtig Lust auf große Mutations und optimistische UI-Updates, die nur dafür sorgen, dass ich noch mehr dämliche Queries schreiben muss.

Nach dem dritten Abend hatte ich eine funktionierende Authentifizierung (ich brauchte dafür keinen ganzen Abend, ich investierte nur so 20 Minuten, ich hatte noch anderes zu tun!) und keine Lust mehr auf GraphQL.

Also baute ich es am vierten Abend alles aus. Normalerweise liest man ja immer diese Tweets, in denen Leute schreiben, wie viel Code sie löschen konnten, als sie von React/Redux auf Apollo umstiegen — bei mir sieht das jetzt komplett andersrum aus. Tausend Zeilen komische GraphQL-Queries weichen axios.get('/api/posts'). Das ist natürlich einfach nur witzig, ich verstehe schon, das es in einem Real-World-Projekt ganz anders aussieht — die ganzen Funktionen, die Apollo bringt, brauch ich nur gar nicht.


Nun könnte ich mich über die drei Abende ärgern, an denen ich etwas baute, was mittlerweile schon wieder gelöscht ist und nie benutzt wurde um einen Blogpost zu schreiben — aber das wäre Quatsch. Immerhin habe ich nun gelernt, was GraphQL ist!

Tatsächlich freue ich mich auch immer noch drauf, es in einem Projekt zu benutzen, das größer ist als das popelige Adminpanel dieses Blogs. Ich kann mir gut vorstellen, dass es in einer großen SPA eine richtige Daseinsberechtigung hat und eine Menge Spaß macht. Aber es ist halt, mit Apollo und all dem Kram der dazu gehört, ein richtig fettes Thema, mit dem man sich auseinandersetzen muss. Das muss sich schon lohnen.

Also, meine Empfehlung: Schaut es euch ruhig mal an, es könnte ganz cool sein. Nur halt nicht für die kleinen Quatsch-Projekte, mit denen man es ausprobiert. (Außer man nimmt sich mehr als drei Abende Zeit)

Kommentare, Feedback und andere Anmerkungen?
Schreib mir eine E-Mail 🤓