AEM GraphQL-API zur Verwendung mit Inhaltsfragmenten

Die mit Inhaltsfragmenten verwendete GraphQL-API von Adobe Experience Manager as a Cloud Service (AEM) basiert stark auf der standardmäßigen Open-Source-GraphQL-API.

Die Verwendung der GraphQL-API in AEM ermöglicht die effiziente Bereitstellung von Inhaltsfragmenten an JavaScript-Clients in Headless CMS-Implementierungen:

  • Vermeiden von iterativen API-Anfragen wie bei REST,
  • Sicherstellen, dass die Bereitstellung auf die spezifischen Anforderungen beschränkt ist,
  • Ermöglicht den Massenzugriff auf genau das, was für die Wiedergabe als Antwort auf eine einzige API-Abfrage erforderlich ist.
HINWEIS

GraphQL wird derzeit in zwei (separaten) Szenarien in Adobe Experience Manager (AEM) als Cloud Service verwendet:

Die GraphQL-API

GraphQL ist:

  • …eine Abfragesprache für APIs und eine Laufzeitumgebung zur Erfüllung dieser Abfragen mit Ihren vorhandenen Daten. GraphQL bietet eine vollständige und verständliche Beschreibung der Daten in Ihrer API, gibt Kunden die Möglichkeit, genau das abzufragen, was sie benötigen, und nicht mehr, macht es einfacher, APIs im Laufe der Zeit weiterzuentwickeln, und ermöglicht leistungsstarke Entwicklerwerkzeuge.

    Weitere Informationen finden Sie unter GraphQL.org

  • …eine offene Spezifikation für eine flexible API-Schicht. Legen Sie GraphQL über Ihre bestehenden Back-Ends, um Produkte schneller als je zuvor zu erstellen…“.

    Weitere Informationen finden Sie unter GraphQL entdecken.

  • "…eine Datensprache und -spezifikation, die 2012 intern von Facebook entwickelt wurde, bevor sie 2015 öffentlich zugänglich gemacht wurde. Sie bietet eine Alternative zu REST-basierten Architekturen mit dem Ziel, die Produktivität von Entwicklern zu erhöhen und die Menge der übertragenen Daten zu minimieren. GraphQL wird in der Produktion von Hunderten von Organisationen aller Größen verwendet…"

    Siehe GraphQL Foundation.

Weitere Informationen zur GraphQL-API finden Sie in den folgenden Abschnitten (neben vielen anderen Ressourcen):

Die Implementierung von GraphQL für AEM basiert auf der standardmäßigen GraphQL-Java-Bibliothek. Siehe:

GraphQL-Terminologie

GraphQL verwendet Folgendes:

  • Abfragen

  • Schema und Typen:

    • Schema werden von AEM basierend auf den Inhaltsfragmentmodellen generiert.
    • GraphQL stellt mithilfe Ihrer Schema die Typen und Vorgänge dar, die für die GraphQL zur AEM Implementierung zulässig sind.
  • Felder

  • GraphQL-Endpunkt

    • Der Pfad in AEM, der auf die GraphQL-Abfragen reagiert und Zugriff auf die GraphQL-Schema bietet.

    • Weitere Informationen finden Sie unter Aktivieren des GraphQL-Endpunkts.

In der (GraphQL.org) Einführung in GraphQL finden Sie ausführliche Informationen, einschließlich der Best Practices.

GraphQL-Abfragetypen

Mit GraphQL können Sie Abfragen durchführen, um entweder:

GraphQL für AEM Endpunkt

Der Endpunkt ist der Pfad, der für den Zugriff auf GraphQL für AEM verwendet wird. Mit diesem Pfad können Sie (oder Ihr Programm):

  • auf das GraphQL-Schema zugreifen,
  • Ihre GraphQL-Abfragen senden,
  • Antworten (auf Ihre GraphQL-Abfragen) empfangen.

Der Repository-Pfad des GraphQL für AEM Endpunkt lautet:

/content/cq:graphql/global/endpoint

Ihre App kann den folgenden Pfad in der Anforderungs-URL verwenden:

/content/_cq_graphql/global/endpoint.json

Um den Endpunkt für GraphQL für AEM zu aktivieren, müssen Sie:

VORSICHT

Diese Schritte können sich in naher Zukunft ändern.

Aktivieren des GraphQL-Endpunkts

HINWEIS

Unter Unterstützende Pakete finden Sie Informationen zu den Paketen, die Adobe bereitstellt, um diese Schritte zu vereinfachen.

Um GraphQL-Abfragen in AEM zu aktivieren, erstellen Sie einen Endpunkt unter /content/cq:graphql/global/endpoint:

  • Die Knoten cq:graphql und global müssen vom Typ sling:Folder sein.
  • Knoten endpoint muss vom Typ nt:unstructured sein und ein sling:resourceType von graphql/sites/components/endpoint enthalten.
VORSICHT

Der Endpunkt ist für jeden zugänglich. Dies kann - insbesondere bei Veröffentlichungsinstanzen - Sicherheitsbedenken aufwerfen, da GraphQL-Abfragen eine hohe Serverbelastung verursachen können.

Sie können ACLs je nach Anwendungsfall am Endpunkt einrichten.

HINWEIS

Ihr Endpunkt funktioniert nicht standardmäßig. Sie müssen Zusätzliche Konfigurationen für GraphQL Endpoint separat angeben.

HINWEIS

Zusätzlich können Sie GraphQL-Abfragen mit der GraphiQL IDE testen und debuggen.

Zusätzliche Konfigurationen für GraphQL Endpunkt

HINWEIS

Unter Unterstützende Pakete finden Sie Informationen zu den Paketen, die Adobe bereitstellt, um diese Schritte zu vereinfachen.

Weitere Konfigurationen sind erforderlich:

  • Dispatcher:
    • So lassen Sie erforderliche URLs zu
    • Obligatorisch
  • Vanity-URL:
    • So weisen Sie dem Endpunkt eine vereinfachte URL zu
    • Optional
  • OSGi-Konfiguration:
    • GraphQL Servlet-Konfiguration:
      • Verarbeitet Anforderungen an den Endpunkt
      • Der Konfigurationsname ist org.apache.sling.graphql.core.GraphQLServlet. Es muss als OSGi-Fabrikkonfiguration bereitgestellt werden
      • sling.servlet.extensions muss auf [json]
      • sling.servlet.methods muss auf [GET,POST]
      • sling.servlet.resourceTypes muss auf [graphql/sites/components/endpoint]
      • Obligatorisch
    • Schema-Servlet-Konfiguration:
      • Erstellt das GraphQL-Schema
      • Der Konfigurationsname ist com.adobe.aem.graphql.sites.adapters.SlingSchemaServlet. Es muss als OSGi-Fabrikkonfiguration bereitgestellt werden
      • sling.servlet.extensions muss auf [GQLschema]
      • sling.servlet.methods muss auf [GET]
      • sling.servlet.resourceTypes muss auf [graphql/sites/components/endpoint]
      • Obligatorisch
    • CSRF-Konfiguration:
      • Sicherheitsschutz für den Endpunkt
      • Der Konfigurationsname lautet com.adobe.granite.csrf.impl.CSRFFilter
      • hinzufügen /content/cq:graphql/global/endpoint zur vorhandenen Liste der ausgeschlossenen Pfade (filter.excluded.paths)
      • Obligatorisch

Unterstützende Pakete

Um die Einrichtung eines GraphQL-Endpunkts zu vereinfachen, stellt Adobe das Paket GraphQL-Beispielprojekt bereit.

Dieses Archiv enthält sowohl die erforderliche zusätzliche Konfiguration als auch den GraphQL-Endpunkt. Wenn sie auf einer einfachen AEM installiert ist, wird ein vollständig funktionierender GraphQL-Endpunkt bei /content/cq:graphql/global/endpoint verfügbar gemacht.

Dieses Paket soll als Entwurf für Ihre eigenen GraphQL Projekte dienen. Einzelheiten zur Verwendung des Pakets finden Sie im Paket README.

Sollten Sie es vorziehen, die erforderliche Konfiguration manuell zu erstellen, stellt Adobe auch ein dediziertes GraphQL Endpoint Content Package bereit. Dieses Inhaltspaket enthält nur den GraphQL-Endpunkt ohne Konfiguration.

GraphiQL-Schnittstelle

Eine Implementierung der Standard-Schnittstelle GraphiQL steht zur Verwendung mit AEM GraphQL zur Verfügung. Dies kann mit AEM installiert werden.

Auf dieser Oberfläche können Sie Abfragen direkt eingeben und testen.

Beispiel:

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

Dies bietet Funktionen wie Syntaxhervorhebung, automatische Vervollständigung, automatische Vorschläge sowie einen Verlauf und eine Online-Dokumentation:

GraphiQL-Schnittstelle

AEM GraphiQL-Schnittstelleinstallieren

Die GraphiQL-Benutzeroberfläche kann mit einem dedizierten Paket auf AEM installiert werden: das GraphiQL Content Package v0.0.4-Paket.

Anwendungsfälle für Autoren- und Veröffentlichungsumgebungen

Die Anwendungsfälle können vom Typ der AEM as a Cloud Service-Umgebung abhängig sein:

  • Veröffentlichungsumgebung; wird verwendet, um:

    • Daten für das JS-Programm (Standardanwendungsfall) abzufragen
  • Autorenumgebung; wird verwendet, um:

    • Daten für „Content-Management-Zwecke“ abzufragen:
      • GraphQL in AEM as a Cloud Service ist derzeit eine schreibgeschützte API.
      • Die REST-API kann für CR(u)D-Vorgänge verwendet werden.

Berechtigungen

Die Berechtigungen sind diejenigen, die für den Zugriff auf Assets erforderlich sind.

Schema-Generierung

GraphQL ist eine stark typisierte API, was bedeutet, dass die Daten klar strukturiert und nach Typ geordnet sein müssen.

Die GraphQL-Spezifikation enthält eine Reihe von Richtlinien zum Erstellen einer robusten API zum Abfragen von Daten in einer bestimmten Instanz. Dazu muss ein Client das Schema abrufen, das alle für eine Abfrage erforderlichen Typen enthält.

Bei Inhaltsfragmenten basieren die GraphQL-Schema (Struktur und Typen) auf Enabled Inhaltsfragmentmodellen und deren Datentypen.

VORSICHT

Alle GraphQL-Schema (abgeleitet von Inhaltsfragmentmodellen, die Enabled aktiviert wurden) sind über den GraphQL-Endpunkt lesbar.

Das bedeutet, dass Sie sicherstellen müssen, dass keine sensiblen Daten verfügbar sind, da sie auf diese Weise gesickert werden könnten; Dazu gehören beispielsweise Informationen, die als Feldnamen in der Modelldefinition vorhanden sein könnten.

Wenn ein Benutzer beispielsweise ein Inhaltsfragmentmodell mit dem Namen Article erstellt hat, generiert AEM das Objekt article, das dem Typ ArticleModel entspricht. Die Felder dieses Typs entsprechen den im Modell definierten Feldern und Datentypen.

  1. Ein Inhaltsfragmentmodell:

    Inhaltsfragmentmodell zur Verwendung mit GraphQL

  2. Das entsprechende GraphQL-Schema (Ausgabe aus der grafischen QL-Dokumentation):
    GraphQL-Schema basierend auf Inhaltsfragmentmodell

    Dies zeigt, dass der generierte Typ ArticleModel mehrere Felder enthält.

    • Drei davon wurden vom Benutzer kontrolliert: author, main und referencearticle.

    • Die anderen Felder wurden automatisch von AEM hinzugefügt und stellen hilfreiche Methoden dar, um Informationen zu einem bestimmten Inhaltsfragment bereitzustellen. In diesem Beispiel _path, _metadata und _variations. Diese Hilfefelder sind mit einem vorangestellten _ gekennzeichnet, um zu unterscheiden, was vom Benutzer definiert wurde und was automatisch generiert wurde.

  3. Nachdem ein Benutzer ein Inhaltsfragment basierend auf dem Modell „Article“ erstellt hat, kann es über GraphQL abgefragt werden. Beispiele finden Sie in den Beispielabfragen (basierend auf einer Beispielstruktur für Inhaltsfragmente zur Verwendung mit GraphQL).

In GraphQL für AEM ist das Schema flexibel. Dies bedeutet, dass es jedes Mal automatisch generiert wird, wenn ein Inhaltsfragmentmodell erstellt, aktualisiert oder gelöscht wird. Die Datenschema-Caches werden auch aktualisiert, wenn Sie ein Inhaltsfragmentmodell aktualisieren.

Der Sites GraphQL-Dienst überwacht (im Hintergrund) alle Änderungen, die an einem Inhaltsfragmentmodell vorgenommen werden. Wenn Aktualisierungen erkannt werden, wird nur dieser Teil des Schemas neu generiert. Diese Optimierung spart Zeit und bietet Stabilität.

Wenn Sie zum Beispiel:

  1. ein Paket installieren, das Content-Fragment-Model-1 und Content-Fragment-Model-2 enthält:

    1. Es werden GraphQL-Typen für Model-1 und Model-2 generiert.
  2. anschließend Content-Fragment-Model-2 ändern:

    1. Nur der GraphQL-Typ Model-2 wird aktualisiert.

    2. Model-1 bleibt unverändert.

HINWEIS

Dies ist wichtig, wenn Sie Massenaktualisierungen von Inhaltsfragmentmodellen über die REST-API oder auf andere Weise durchführen möchten.

Das Schema wird über denselben Endpunkt wie die GraphQL-Abfragen bereitgestellt, wobei der Client die Tatsache behandelt, dass das Schema mit der GQLschema-Erweiterung aufgerufen wird. Wenn Sie beispielsweise eine einfache GET-Anfrage an /content/cq:graphql/global/endpoint.GQLschema ausführen, wird das Schema mit dem Inhaltstyp ausgegeben: text/x-graphql-schema;charset=iso-8859-1.

Felder

Innerhalb des Schemas gibt es einzelne Felder, die zwei grundlegenden Kategorien angehören:

  • Von Ihnen generierte Felder.

    Eine Auswahl von Feldtypen wird verwendet, um Felder basierend auf der Konfiguration des Inhaltsfragmentmodells zu erstellen. Die Feldnamen werden aus dem Feld Eigenschaftsname des Datentyps entnommen.

    • Es ist auch die Eigenschaft Rendern als zu berücksichtigen, da Benutzer bestimmte Datentypen konfigurieren können, beispielsweise als einzeiligen oder mehrzeiligen Text.
  • GraphQL für AEM generiert auch eine Reihe von Hilfsfeldern.

    Diese werden verwendet, um ein Inhaltsfragment zu identifizieren oder um weitere Informationen zu einem Inhaltsfragment abzurufen.

Feldtypen

GraphQL für AEM unterstützt eine Liste von Typen. Alle unterstützten Datentypen für Inhaltsfragmentmodelle und die entsprechenden GraphQL-Typen werden dargestellt:

Datentyp für Inhaltsfragmentmodelle GraphQL-Typ Beschreibung
Einzelzeilentext Zeichenfolge, [Zeichenfolge] Wird für einfache Zeichenfolgen wie Autorennamen, Ortsnamen usw. verwendet.
Mehrzeilentext Zeichenfolge Dient zum Ausgeben von Text, wie z. B. den Text eines Artikels
Zahl Gleitkommazahl, [Gleitkommazahl] Wird für die Anzeige von Gleitkommazahlen und regulären Zahlen verwendet
Boolesch Boolesch Wird für die Anzeige von Kontrollkästchen → einfachen Wahr/Falsch-Aussagen verwendet
Datum und Uhrzeit Kalender Wird verwendet, um Datum und Uhrzeit in einem ISO 8086-Format anzuzeigen
Aufzählung Zeichenfolge Wird verwendet, um eine Option aus einer Liste von Optionen anzuzeigen, die bei der Modellerstellung definiert wurde
Tags [Zeichenfolge] Wird verwendet, um eine Liste von Zeichenfolgen anzuzeigen, die in AEM verwendete Tags darstellen
Inhaltsreferenz Zeichenfolge Wird verwendet, um den Pfad zu einem anderen Asset in AEM anzuzeigen
Fragmentreferenz Ein Modelltyp Wird verwendet, um auf ein anderes Inhaltsfragment eines bestimmten Modelltyps zu verweisen, das beim Erstellen des Modells definiert wurde

Hilfsfelder

Zusätzlich zu den Datentypen für benutzergenerierte Felder generiert GraphQL für AEM eine Reihe von Hilfsfeldern, um ein Inhaltsfragment zu identifizieren oder zusätzliche Informationen zu einem Inhaltsfragment bereitzustellen.

Pfad

Das Feld „path“ (Pfad) wird in GraphQL als Bezeichner verwendet. Es stellt den Pfad des Inhaltsfragment-Assets im AEM Repository dar. Wir haben es als Bezeichner für ein Inhaltsfragment ausgewählt, da es:

  • innerhalb von AEM eindeutig ist,
  • leicht abgerufen werden kann.

Der folgende Code zeigt die Pfade aller Inhaltsfragmente an, die auf der Grundlage des Inhaltsfragmentmodells Person erstellt wurden.

{
  personList {
    items {
      _path
    }
  }
}

Um ein einzelnes Inhaltsfragment eines bestimmten Typs abzurufen, müssen Sie auch zuerst dessen Pfad bestimmen. Beispiel:

{
  personByPath(_path: "/content/dam/path/to/fragment/john-doe") {
    item {
      _path
      firstName
      name
    }
  }
}

Siehe Abfrage - Ein einzelnes spezifisches Stadtfragment.

Metadaten

Mit GraphQL stellt AEM auch die Metadaten eines Inhaltsfragments zur Verfügung. Metadaten sind die Informationen, die ein Inhaltsfragment beschreiben, z. B. der Titel eines Inhaltsfragments, der Pfad der Miniaturansicht, die Beschreibung eines Inhaltsfragments, das Erstellungsdatum usw.

Da Metadaten über den Schema-Editor generiert werden und daher keine bestimmte Struktur haben, wurde der GraphQL-Typ TypedMetaData implementiert, um die Metadaten eines Inhaltsfragments anzuzeigen. TypedMetaData stellt die Informationen gruppiert nach den folgenden Skalartypen bereit:

Feld
stringMetadata:[StringMetadata]!
stringArrayMetadata:[StringArrayMetadata]!
intMetadata:[IntMetadata]!
intArrayMetadata:[IntArrayMetadata]!
floatMetadata:[FloatMetadata]!
floatArrayMetadata:[FloatArrayMetadata]!
booleanMetadata:[BooleanMetadata]!
booleanArrayMetadata:[booleanArrayMetadata]!
calendarMetadata:[CalendarMetadata]!
calendarArrayMetadata:[CalendarArrayMetadata]!

Jeder Skalartyp repräsentiert entweder ein einzelnes Name-Wert-Paar oder ein Array von Name-Wert-Paaren, wobei der Wert dieses Paares dem Typ entspricht, in dem er gruppiert wurde.

Wenn Sie beispielsweise den Titel eines Inhaltsfragments abrufen möchten, wissen wir, dass diese Eigenschaft eine Zeichenfolgeneigenschaft ist. Daher würden wir eine Abfrage für alle Zeichenfolgenmetadaten durchführen:

Abfragen von Metadaten:

{
  personByPath(_path: "/content/dam/path/to/fragment/john-doe") {
    item {
      _path
      _metadata {
        stringMetadata {
          name
          value
        }
      }
    }
  }
}

Sie können alle GraphQL-Typen für Metadaten anzeigen, wenn Sie das generierte GraphQL-Schema anzeigen. Alle Modelltypen haben dieselben TypedMetaData.

HINWEIS

Unterschied zwischen normalen und Array-Metadaten
Beachten Sie, dass sich StringMetadata und StringArrayMetadata beide auf das beziehen, was im Repository gespeichert ist, und nicht darauf, wie Sie sie abrufen.

Wenn Sie beispielsweise das Feld stringMetadata aufrufen, erhalten Sie ein Array aller im Repository gespeicherten Metadaten als String und wenn Sie stringArrayMetadata aufrufen, erhalten Sie ein Array aller Metadaten, die im Repository als String[] gespeichert wurden.

Weitere Informationen finden Sie unter Beispielabfrage für Metadaten – Liste der Metadaten für Auszeichnungen mit dem Titel „GB“.

Varianten

Das Feld _variations wurde implementiert, um die Abfrage der Varianten eines Inhaltsfragments zu vereinfachen. Beispiel:

{
  personByPath(_path: "/content/dam/path/to/fragment/john-doe") {
    item {
      _variations
    }
  }
}

Weitere Informationen finden Sie unter Beispielabfrage – Alle Städte mit einer gegebenen Variante.

GraphQL-Variablen

Mit GraphQL können Variablen in die Abfrage eingefügt werden. Weitere Informationen finden Sie in der GraphQL-Dokumentation für GraphiQL.

Um beispielsweise alle Inhaltsfragmente vom Typ Article abzurufen, die eine bestimmte Variante aufweisen, können Sie die Variable variation in GraphiQL angeben.

GraphQL-Variablen

### query
query GetArticlesByVariation($variation: String!) {
    articleList(variation: $variation) {
        items {
            _path
            author
        }
    }
}
 
### in query variables
{
    "variation": "uk"
}

GraphQL-Anweisungen

In GraphQL besteht die Möglichkeit, die Abfrage basierend auf Variablen zu ändern, die als GraphQL-Anweisungen bezeichnet werden.

Sie können beispielsweise das Feld adventurePrice basierend auf einer Variablen includePrice in eine Abfrage für alle AdventureModels einfügen.

GraphQL-Anweisungen

### query
query GetAdventureByType($includePrice: Boolean!) {
  adventureList {
    items {
      adventureTitle
      adventurePrice @include(if: $includePrice)
    }
  }
}
 
### in query variables
{
    "includePrice": true
}

Filtern

Sie können auch Filterung in Ihren GraphQL-Abfragen verwenden, um bestimmte Daten zurückzugeben.

Beim Filtern wird eine Syntax verwendet, die auf logischen Operatoren und Ausdrücken basiert.

Beispielsweise werden mit der folgenden (einfachen) Abfrage alle Personen mit dem Namen Jobs oder Smith Filter:

query {
  personList(filter: {
    name: {
      _logOp: OR
      _expressions: [
        {
          value: "Jobs"
        },
        {
          value: "Smith"
        }
      ]
    }
  }) {
    items {
      name
      firstName
    }
  }
}

Weitere Beispiele:

Abfragen des GraphQL-Endpunkts von einer externen Website

Für den Zugriff auf den GraphQL-Endpunkt über eine externe Website müssen Sie Folgendes konfigurieren:

CORS-Filter

HINWEIS

Einen detaillierten Überblick über die CORS-Richtlinie zur gemeinsamen Nutzung von Ressourcen in AEM finden Sie unter Grundlegendes zur gemeinsamen Nutzung gemeinsamer Ressourcen (Cross-Origin Resource Sharing – CORS).

Um auf den GraphQL-Endpunkt zugreifen zu können, muss eine CORS-Richtlinie im Customer Git-Repository konfiguriert werden. Dazu fügen Sie eine entsprechende OSGi CORS-Konfigurationsdatei für den/die gewünschten Endpunkt/en hinzu.

Diese Konfiguration muss eine vertrauenswürdige Website-Herkunft alloworigin oder alloworiginregexp angeben, für die der Zugriff gewährt werden muss.

Um beispielsweise den Zugriff auf den GraphQL-Endpunkt für https://my.domain zu gewähren, können Sie Folgendes verwenden:

{
  "supportscredentials":true,
  "supportedmethods":[
    "GET",
    "HEAD",
    "POST"
  ],
  "exposedheaders":[
    ""
  ],
  "alloworigin":[
    "https://my.domain"
  ],
  "maxage:Integer":1800,
  "alloworiginregexp":[
    ""
  ],
  "supportedheaders":[
    "Origin",
    "Accept",
    "X-Requested-With",
    "Content-Type",
    "Access-Control-Request-Method",
    "Access-Control-Request-Headers"
  ],
  "allowedpaths":[
    "/content/_cq_graphql/global/endpoint.json"
  ]
}

Wenn Sie einen Vanity-Pfad für den Endpunkt konfiguriert haben, können Sie ihn auch in allowedpaths verwenden.

Werber-Filter

Zusätzlich zur CORS-Konfiguration muss ein Werber-Filter konfiguriert werden, um den Zugriff von Drittanbieterhosts zu ermöglichen.

Dazu fügen Sie eine entsprechende OSGi-Werber-Konfigurationsdatei hinzu, die Folgendes beinhaltet:

  • gibt einen Hostnamen der vertrauenswürdigen Website an. entweder allow.hosts oder allow.hosts.regexp,
  • gewährt Zugriff auf diesen Hostnamen.

Wenn Sie beispielsweise mit dem Werber my.domain Zugriff auf Anforderungen gewähren möchten, können Sie:

{
    "allow.empty":false,
    "allow.hosts":[
      "my.domain"
    ],
    "allow.hosts.regexp":[
      ""
    ],
    "filter.methods":[
      "POST",
      "PUT",
      "DELETE",
      "COPY",
      "MOVE"
    ],
    "exclude.agents.regexp":[
      ""
    ]
}
VORSICHT

Der Kunde ist für Folgendes verantwortlich:

  • Nur Zugriff auf vertrauenswürdige Domains gewähren
  • sicherstellen, dass keine sensiblen Informationen offen gelegt werden
  • keine Platzhaltersyntax [*] verwenden; Dadurch wird sowohl der authentifizierte Zugriff auf den GraphQL-Endpunkt deaktiviert als auch der gesamten Welt zugänglich gemacht.
VORSICHT

Alle GraphQL Schema (abgeleitet von Inhaltsfragmentmodellen, die Enabled aktiviert wurden) können über den GraphQL-Endpunkt gelesen werden.

Das bedeutet, dass Sie sicherstellen müssen, dass keine sensiblen Daten verfügbar sind, da sie auf diese Weise gesickert werden könnten; Dazu gehören beispielsweise Informationen, die als Feldnamen in der Modelldefinition vorhanden sein könnten.

Authentifizierung

Siehe Authentifizierung für Remote AEM GraphQL-Abfragen für Inhaltsfragmente.

Häufig gestellte Fragen

Es wurden folgende Fragen aufgeworfen:

  1. F: „Wie unterscheidet sich die GraphQL-API für AEM von der Query Builder-API?

    • A:
      Die AEM-GraphQL-API bietet vollständige Kontrolle über die JSON-Ausgabe und ist ein Industriestandard für die Abfrage von Inhalten.
      Für die Zukunft plant AEM, in die AEM GraphQL-API zu investieren.

Tutorial – Erste Schritte mit AEM Headless und GraphQL

Suchen Sie nach einem praktischen Tutorial? Lesen Sie das umfassende Tutorial Erste Schritte mit AEM Headless und GraphQL, in dem veranschaulicht wird, wie Inhalte mithilfe der GraphQL-APIs von AEM erstellt und verfügbar gemacht und von einem externen Programm in einem Headless CMS-Szenario verwendet werden.

Auf dieser Seite