Zugreifen auf Ihre Inhalte über AEM-Bereitstellungs-APIs

In diesem Teil der AEM Headless-Entwickler-Tour erfahren Sie, wie Sie mit GraphQL-Abfragen auf die Inhalte Ihrer Inhaltsfragmente zugreifen und diese in Ihr Programm einfließen lassen können (Headless-Bereitstellung).

Die bisherige Entwicklung

Im vorherigen Dokument der AEM Headless-Tour, So modellieren Sie Ihre Inhalte, haben Sie die Grundlagen der Inhaltsmodellierung in AEM gelernt. Daher sollten Sie jetzt verstehen, wie Sie Ihre Inhaltsstruktur modellieren und dann diese Struktur mithilfe von AEM-Inhaltsfragmentmodellen und -Inhaltsfragmenten umsetzen:

  • Machen Sie sich mit den Konzepten und der Terminologie zur Inhaltsmodellierung vertraut.
  • Erfahren Sie, warum Inhaltsmodellierung für die Headless-Bereitstellung von Inhalten erforderlich ist.
  • Verstehen Sie, wie Sie diese Struktur mit AEM-Inhaltsfragmentmodellen umsetzen und Inhalte mit Inhaltsfragmenten erstellen können.
  • Machen Sie sich damit vertraut, wie Sie Inhalte modellieren können, und erfahren Sie anhand einfacher Beispiele mehr über Prinzipien.

Dieser Artikel baut auf diesen Grundlagen auf, damit Sie verstehen, wie Sie in AEM auf Ihren vorhandenen Headless-Content mithilfe der AEM-GraphQL-API zugreifen können.

  • Zielgruppe: Anfänger
  • Ziele: Erfahren Sie, wie Sie mithilfe AEM-GraphQL-Abfragen auf den Inhalt Ihrer Inhaltsfragmente zugreifen können:
    • Einführung in GraphQL und die AEM-GraphQL-API.
    • Machen Sie sich mit den Details der AEM-GraphQL-API vertraut.
    • Sehen Sie sich einige Beispielabfragen an, um mehr über den Einsatz in der Praxis zu erfahren.

Sie möchten also auf Ihre Inhalte zugreifen?

Sie haben all diese Inhalte, sauber strukturiert (in Inhaltsfragmenten) und möchten sie nun in Ihr neues Programm aufnehmen. Doch wie bekommen Sie sie dorthin?

Sie benötigen eine Möglichkeit, bestimmte Inhalte gezielt anzusprechen, auszuwählen, was Sie benötigen, und sie zur weiteren Verarbeitung an Ihr Programm zurückzugeben.

Mit Adobe Experience Manager (AEM) as a Cloud Service können Sie mithilfe der AEM-GraphQL-API selektiv auf Ihre Inhaltsfragmente zugreifen, um nur die benötigten Inhalte zurückzugeben. Dies bedeutet, dass Sie die Headless-Bereitstellung von strukturierten Inhalten zur Verwendung in Ihren Programmen umsetzen können.

HINWEIS

Die AEM-GraphQL-API ist eine anwenderdefinierte Implementierung, die auf der standardmäßigen GraphQL-API-Spezifikation basiert.

GraphQL – eine Einführung

GraphQL ist eine Open-Source-Spezifikation, mit der Ihnen Folgendes zur Verfügung steht:

  • eine Abfragesprache, mit der Sie bestimmte Inhalte aus strukturierten Objekten auswählen können,
  • eine Laufzeit, um diese Abfragen mit Ihren strukturierten Inhalten auszuführen.

GraphQL ist eine stark typisierte API. Das bedeutet, dass alle Inhalte klar strukturiert und nach Typ organisiert sein müssen, damit GraphQL versteht, auf was zugegriffen wird und wie. Die Datenfelder werden in GraphQL-Schemas definiert, die die Struktur Ihrer Inhaltsobjekte definieren.

GraphQL-Endpunkte geben dann die Pfade an, die GraphQL-Abfragen ausführen.

Das bedeutet, dass Ihr Programm genau, zuverlässig und effizient die benötigten Inhalte auswählen kann – genau das, was Sie bei Verwendung mit AEM brauchen.

HINWEIS

Siehe GraphQL.org und GraphQL.com.

AEM-GraphQL-API

Die AEM-GraphQL-API ist eine angepasste Version, die auf der standardmäßigen GraphQL-API-Spezifikation basiert und speziell so konfiguriert wurde, dass Sie (komplexe) Abfragen in Inhaltsfragmenten durchführen können.

Inhaltsfragmente werden verwendet, da der Inhalt nach Inhaltsfragmentmodellen strukturiert ist. Dies erfüllt eine Grundanforderung von GraphQL.

  • Ein Inhaltsfragmentmodell besteht aus einem oder mehreren Feldern.
    • Jedes Feld wird anhand eines Datentyps definiert.
  • Inhaltsfragmentmodelle werden verwendet, um die entsprechenden AEM-GraphQL-Schemas zu generieren.

Für den Zugriff auf GraphQL für AEM (und die Inhalte) wird ein Endpunkt verwendet, um den Zugriffspfad bereitzustellen.

Die über die AEM-GraphQL-API zurückgegebenen Inhalte können dann von Ihren Programmen verwendet werden.

Um Ihnen beim direkten Eingeben und Testen von Abfragen zu helfen, ist auch eine Implementierung der standardmäßigen GraphiQL-Schnittstelle für die Verwendung mit AEM-GraphQL verfügbar (kann mit AEM installiert werden). Dies bietet Funktionen wie Syntaxhervorhebung, automatische Vervollständigung, automatische Vorschläge sowie einen Verlauf und eine Online-Dokumentation.

HINWEIS

Die Implementierung der AEM-GraphQL-API basiert auf den GraphQL-Java-Bibliotheken.

Inhaltsfragmente zur Verwendung mit der AEM-GraphQL-API

Inhaltsfragmente können als Grundlage für GraphQL-Abfragen für AEM-Schemas verwendet werden:

  • Sie ermöglichen es Ihnen, seitenunabhängige Inhalte zu entwerfen, zu erstellen, zu kuratieren und zu veröffentlichen, die sich für die Headless-Bereitstellung eignen.
  • Sie basieren auf einem Inhaltsfragmentmodell, das die Struktur für das daraus entstehende Fragment mithilfe einer Auswahl von Datentypen vordefiniert.
  • Zusätzliche Strukturebenen können mit dem Fragmentreferenz-Datentyp erstellt werden, der beim Definieren eines Modells verfügbar ist.

Inhaltsfragmentmodelle

Diese Inhaltsfragmentmodelle:

  • werden verwendet, um die Schemas zu erzeugen, sobald sie aktiviert sind.
  • stellen die für GraphQL erforderlichen Datentypen und Felder bereit. Sie stellen sicher, dass Ihr Programm nur das anfordert, was möglich ist, und das erhält, was erwartet wird.
  • Der Datentyp Fragmentreferenzen kann in Ihrem Modell verwendet werden, um auf ein anderes Inhaltsfragment zu verweisen und so zusätzliche Strukturebenen einzuführen.

Fragmentreferenzen

Die Fragmentreferenz:

  • ist ein bestimmter Datentyp, der beim Definieren eines Inhaltsfragmentmodells verfügbar ist,

  • verweist auf ein anderes Fragment, abhängig von einem bestimmten Inhaltsfragmentmodell,

  • ermöglicht das Erstellen und anschließende Abrufen strukturierter Daten.

    • Wenn als multifeed definiert, können mehrere Unterfragmente vom primären Fragment referenziert (abgerufen) werden.

JSON-Vorschau

Um Sie beim Entwerfen und Entwickeln Ihrer Inhaltsfragmentmodelle zu unterstützen, können Sie die JSON-Ausgabe im Inhaltsfragment-Editor in der Vorschau anzeigen.

JSON-Vorschau

Verwenden der AEM-GraphQL-API

Ersteinrichtung

Bevor Sie mit Abfragen zu Ihren Inhalten beginnen, müssen Sie Folgendes tun:

Beispielstruktur

Um die AEM-GraphQL-API in einer Abfrage zu verwenden, können die beiden sehr einfachen Strukturen des Inhaltsfragmentmodells verwendet werden:

  • Unternehmen
    • Name – Text
    • CEO (Person) – Fragmentreferenz
    • Arbeitnehmer (Personen) – Fragmentreferenz(en)
  • Person
    • Name – Text
    • Vorname – Text

Wie Sie sehen können, verweisen die Felder für CEO und Mitarbeiter auf die Personenfragmente.

Die Fragmentmodelle werden in folgenden Fällen verwendet:

  • beim Erstellen von Inhalten im Inhaltsfragment-Editor
  • für die Generierung der von Ihnen abgefragten GraphQL-Schemas

Testen von Abfragen

Die Abfragen können über die GraphiQL-Schnittstelle eingegeben werden, beispielsweise unter:

  • http://localhost:4502/content/graphiql.html

GraphiQL-Schnittstelle

Erste Schritte mit Abfragen

Eine einfache Abfrage besteht darin, die Namen aller Einträge im Unternehmensschema zurückzugeben. Hier fordern Sie eine Liste aller Unternehmensnamen an:

query {
  companyList {
    items {
      name
    }
  }
}

Eine etwas komplexere Abfrage ist es, alle Personen auszuwählen, die nicht den Namen „Jobs“ haben. Dadurch wird unter allen Personen nach den Personen gefiltert, die nicht den Namen „Jobs“ haben. Dies wird mit dem Operator EQUALS_NOT erreicht (es gibt viele weitere):

query {
  personList(filter: {
    name: {
      _expressions: [
        {
          value: "Jobs"
          _operator: EQUALS_NOT
        }
      ]
    }
  }) {
    items {
      name
      firstName
    }
  }
}

Sie können auch komplexere Abfragen erstellen. Fragen Sie z. B. ab nach allen Firmen, die mindestens einen Mitarbeiter mit dem Namen „Smith“ haben. Diese Abfrage veranschaulicht die Filterung nach allen Personen namens „Smith“, wobei Informationen aus verschachtelten Fragmenten zurückgegeben werden.

query {
  companyList(filter: {
    employees: {
      _match: {
        name: {
          _expressions: [
            {
              value: "Smith"
            }
          ]
        }
      }
    }
  }) {
    items {
      name
      ceo {
        name
        firstName
      }
      employees {
        name
        firstName
      }
    }
  }
}

Ausführliche Informationen zur Verwendung der AEM-GraphQL-API sowie zur Konfiguration der erforderlichen Elemente finden Sie unter:

  • Verwendung von GraphQL mit AEM
  • Beispielstruktur für Inhaltsfragmente
  • Verwendung von GraphQL mit AEM – Beispielinhalt und Abfragen

Wie geht es weiter

Nachdem Sie nun erfahren haben, wie Sie mit der AEM-GraphQL-API auf Ihren Headless-Content zugreifen und ihn abfragen können, können Sie sich nun damit vertraut machen, wie Sie mit einer REST-API auf die Inhalte Ihrer Inhaltsfragmente zugreifen und diese aktualisieren.

Zusätzliche Ressourcen

Auf dieser Seite