GraphQL Update für OXID eShop
Von der verworfenen Idee, die OXID Headless API auf verschiedene Module zu verteilen
Die entstehende OXID Headless API kann relativ simpel über aufeinander aufbauende Module installiert werden:
Das sogenannte Base Module liefert das Fundament der Integration von GraphQL in den OXID eShop. 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 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: Shop-Administration 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 entschieden, Catalogue, Account und Checkout zu einem einzigen OXID GraphQL Storefront Module zusammenzuführen, das Ihr nun hier finden könnt: https://github.com/OXID-eSales/graphql-storefront-module
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.
Und zum Schluss noch ein kleiner Ausblick in die Zukunft: Als nächstes steht die Integration von externen Payment-Anbietern über GraphQL an.
Weiterführende Links:
Blogpost: Ein Blick hinter die Kulissen der OXID Kernentwicklung
Blogpost: Die Geschichte der GraphQL API für OXID eShop
Blogpost: OXID implements GraphQL
GitHub OXID GraphQL Base Module: https://github.com/OXID-eSales/graphql-base-module
GitHub OXID GraphQL Storefront Module: https://github.com/OXID-eSales/graphql-storefront-module
Dokumentation: https://docs.oxid-esales.com/interfaces/graphql/en/master/
Dokumentation: https://docs.oxid-esales.com/interfaces/graphql/en/5.1/