Von der verworfenen Idee, die OXID GraphQL-API auf verschiedene Module zu verteilen

Die entstehende OXID GraphQL-API kann relativ simpel über aufeinander aufbauende Module installiert werden:

Das so genannte Base Module liefert das Fundament der Integration von GraphQL in den OXID eShop, und daran werden wir nicht rütteln. Denn wer komplett eigene GraphQL-Routen entwickeln möchte, geht vom Base-Module aus seinen völlig eigenen Weg.

Darüber hinaus entwickeln wir für Euch bereits ein bedienbares Schema, um nach und nach alle Funktionalitäten in OXID eShop über GraphQL abzubilden und um somit den Shop letzten Endes komplett headless ansteuerbar zu machen. Bisher haben wir diese, auf dem Base Module aufbauenden Module, in folgende theoretische Bereiche unterteilt und hatten ursprünglich vor, diese auch als (auf Base aufbauende) Module mit ebendiesen Namen abzubilden:

  • Catalogue: Alle Operationen für Produkte und Kategorien im Frontend
  • Account: Die komplette Benutzerverwaltung (Kundenkonto anlegen und verwalten, Bestellhistorie einsehen)
  • Checkout: Alles was benötigt wird, um eine Bestellung durchzuführen
  • Admin: Shopadministration via GraphQL

Theoretisch klang es daher zunächst logisch, drei getrennte Module für die Storefront jeweils für den Katalog-Bereich, darauf aufbauend die Bereiche für Kundenkonto und Bestellprozess umzusetzen. Allerdings mussten wir im Entwicklungsprozess diese Entscheidung zugunsten besserer Code-Lesbarkeit und -Pflegbarkeit revidieren, auch konnte man im Schema der Dokumentation keine klaren Grenzen mehr erkennen, welche Abfragen und Mutationen zu welchem (Sub-)Modul gehören.

Wir haben uns deshalb nach sorgfältiger Abwägung von Für und Wider dazu entschlossen, Catalogue, Account und Checkout zu einem einzigen OXID GraphQL Storefront Module zusammenzuführen, das Ihr nun hier finden könnt: GitHub - OXID-eSales/graphql-storefront-module: This module provides GraphQL queries and mutations for the OXID eShop store front.

Künftig werden wir also noch die Repositories für das Base Module sowie für das Storefront Module pflegen, wiewohl die alten Modul-Repositories in der getaggten Version 1.0 noch immer verfügbar sein werden.

Ein kleiner Blick in die Zukunft: Als nächstes steht die Integration von externen Payment-Anbietern über GraphQL an

Weiterführende Links: