Schnellere CX-Entwicklung und Integration mit GraphQL
Dez. 1, 2020
--
GraphQL 656x400

Schnellere CX-Entwicklung und Integration mit GraphQL

Als eine der Headless-Funktionen bietet Magnolia eine flexible Endpunkt-API für die Bereitstellung. REST-Endpunkte stellen JCR-Daten als JSON bereit und entkoppeln so Inhalt und Bereitstellung. Bei diesem Ansatz zur Abfrage von Daten gibt es zwei potenzielle Herausforderungen: das Antwortformat und der Wartungsaufwand.

Wenn Daten von einem REST-Endpunkt angefordert werden, unterscheidet sich das Format der Daten je nach Endpunkt. Dies bedeutet, dass die Entwickler das eindeutige Antwortformat jedes Endpunkts lernen müssen, bevor sie die Daten verarbeiten können.

REST-Endpunkte müssen ebenfalls gewartet werden. Ein Endpunkt muss jedes Mal aktualisiert werden, wenn sich das Datenmodell ändert. Änderungen am Endpunkt können auch eine Aktualisierung des Codes erfordern, der seinen Inhalt konsumiert. Diese Abhängigkeit kann ein Hindernis bei der Softwareentwicklung sein.

GraphQL bietet eine intelligentere Methode zur Abfrage von Daten. Durch die Bereitstellung des Zugriffs auf alle Daten in der Registry macht GraphQL die Konfiguration von Endpunkten überflüssig und beschleunigt so die Softwareentwicklung.

Front-End-Entwickler sind nicht mehr blockiert, wenn ein REST-Endpunkt nicht genau den Inhalt liefert, den sie benötigen, und Back-End-Entwickler müssen ihre Endpunkte nicht ständig aktualisieren. Der GraphQL-Standard ermöglicht es Entwicklern auch, mit Daten zu arbeiten, ohne dass sie lernen müssen, wie sich ein bestimmter Endpunkt verhält.

Da Entwickler genau angeben können, welche Daten sie benötigen, werden Abfragen portabel und Antworten vorhersehbarer. Aufgrund seiner standardisierten Anfrage- und Antwortformate wird GraphQL auch für die Integration immer beliebter, zum Beispiel in Tools wie Gatsby und Stackbit.

Ein zusätzlicher Vorteil ist eine kleinere Ergebnismenge, die Speicher- und Netzwerkressourcen spart.

Aus diesem Grund fügen wir Magnolia native GraphQL-Unterstützung hinzu.

Was ist GraphQL?

Das "QL" in GraphQL steht für "Query Language". Sie wurde von Facebook entwickelt, um eine standardisierte Methode zur Abfrage von Daten bereitzustellen, die unabhängig von ihrer Quelle ist. Das heißt, solange die API GraphQL spricht, spielt es keine Rolle, wie die Daten gespeichert sind. GraphQL wurde 2015 als Open Source veröffentlicht.

GraphQL-APIs organisieren die Daten, die sie verwalten, in einem GraphQL-Schema nach Typ und Feld und bieten Funktionen für jedes Feld. Auf diese Weise teilen Sie der API mit, welche Daten Sie benötigen. GraphQL ruft dann die Daten ab und aggregiert sie bei Bedarf für Sie. Die Antwort wird als JSON geliefert.

Wie wird GraphQL in Magnolia implementiert?

Bei Verwendung der POST-Methode unterscheidet sich das Verhalten je nach Content-Type-Header:

  • application/x-www-form-urlencoded: Abfragen und Variablen werden als POST-Parameter gesendet

  • application/json: Abfragen und Variablen werden als JSON im Body der Anfrage gesendet

  • application/graphql: Abfragen werden direkt im Textkörper der Anfrage gesendet

In der ersten Version werden Sie in der Lage sein, Magnolia Content Types über die GraphQL API abzurufen.

Wie werden Inhaltstypen auf GraphQL-Typen abgebildet?

Das Modell eines Inhaltstyps wird verwendet, um automatisch eine GraphQL-Typdefinition zu erstellen, die in der GraphQL-Registry gespeichert wird. Die GraphQL-Typdefinition wird bei jeder Änderung eines Inhaltstyps sofort aktualisiert.

Es könnte nicht einfacher sein: Ihre Inhaltsautoren können Inhalte über die visuelle Content App des Content-Typs eingeben und aktualisieren, und Frontend- und Integrationsentwickler können die Inhalte mithilfe von GraphQL nach Belieben zerschneiden und würfeln.

Head to Headless Report

Visual headless: 1,000 CMS users share their thoughts on the next level of content management and digital experience design.

Wie kann ich Inhaltstypen abfragen?

Einzelne Elemente können nach ID und Pfad abgefragt werden:

Java
  { book(id: "9778077a-e0c6-4b9a-9375-baa6c5a06f4d") { title } }  

Mehrere Elemente können durchgeblättert, sortiert und gefiltert werden:

Java
  { books(limit: 4, offset: 1) { title year } } { books(sort: [TITLE_ASC, YEAR_DESC]) { title year }  

Die Filterung unterstützt die folgenden Operatoren, die mit AND und OR kombiniert werden können:

  • =

  • <>

  • >

  • >=

  • <=

  • LIKE

Java
  { books(filter: "@title = 'Radical Candor'") { title year } }  

Durch die Verwendung verschachtelter Abfragen werden Verweise auf Inhaltstypen automatisch aufgelöst und ermöglichen eine Datenaggregation in einer einzigen Anfrage:

Java
  { genres(filter: "name = 'Leadership'" ) { name books { title authors { name } } } }  

Conclusion

Magnolia is expanding its headless capabilities further by adding a GraphQL API to query Content Types. Compared to using the delivery endpoint API, using GraphQL can be a lot more efficient because of its standardized request and response formats. GraphQL also removes blockers in software development by eliminating the need to constantly update endpoints.

Find out more about Magnolia’s GraphQL API in the documentation.

Über den autor

Sandra Schroeter

Former Technical Product Marketing Manager, Magnolia

Sandra started her career managing mission critical environments at Hewlett Packard and found her way into product marketing via PostgreSQL consultancy. Having worked in the area of customer experience over the past few years, Sandra is passionate about creating customer-friendly digital experiences. In her role at Magnolia, Sandra is responsible for value-based product messaging for a technical audience as well as technical content strategy.