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).
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:
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.
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.
Die AEM-GraphQL-API ist eine anwenderdefinierte Implementierung, die auf der standardmäßigen GraphQL-API-Spezifikation basiert.
GraphQL ist eine Open-Source-Spezifikation, mit der Ihnen Folgendes zur Verfügung steht:
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-Schemata 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.
Siehe GraphQL.org und GraphQL.com.
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.
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 GraphQL-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.
Die Implementierung der AEM-GraphQL-API basiert auf den GraphQL-Java-Bibliotheken.
Inhaltsfragmente können als Grundlage für GraphQL-Abfragen für AEM-Schemata verwendet werden:
Diese Inhaltsfragmentmodelle:
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.
Um Sie beim Entwerfen und Entwickeln Ihrer Inhaltsfragmentmodelle zu unterstützen, können Sie die JSON-Ausgabe im Inhaltsfragment-Editor in der Vorschau anzeigen.
Bevor Sie mit Abfragen zu Ihren Inhalten beginnen, müssen Sie Folgendes tun:
Um die AEM-GraphQL-API in einer Abfrage zu verwenden, können die beiden sehr einfachen Strukturen des Inhaltsfragmentmodells verwendet werden:
Wie Sie sehen können, verweisen die Felder für CEO und Mitarbeiter auf die Personenfragmente.
Die Fragmentmodelle werden in folgenden Fällen verwendet:
Die Abfragen können in der GraphiQL-Benutzeroberfläche eingegeben werden. Sie können auf den Abfrage-Editor wie folgt zugreifen:
http://localhost:4502/aem/graphiql.html
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:
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.