Unterschiede in der GraphQL-Antwortstruktur und der Markdown-Ausgabe in Adobe Experience Manager

Nach dem Upgrade auf AEM 6.5.23+ oder 6.5 LTS gibt es Unterschiede in der Struktur der GraphQL-Antworten für Inhaltsfragmente und in der Markdown-Ausgabeformatierung im Vergleich zu früheren Versionen, wie AEM 6.5.20. Diese Änderungen wirken sich darauf aus, wie leere Objekte in Abfragen vom Typ Vereinigung verarbeitet werden und wie Leerzeichen in Markdown-Feldern gerendert werden. Um dieses Problem zu beheben, behandeln Sie leere Objekte in Antworten, passen Sie die Markdown-Verarbeitung an und befolgen Sie die konsistente Kodierung der persistierten Abfrage.

Beschreibung description

Umgebung

  • Produkt: Adobe Experience Manager (AEM) Managed Services, AEM Sites
  • Version: 6.5.23+/ 6.5 LTS (einschließlich SP1/SP2), frühere Version referenziert: 6.5.20

Problem und Symptome

  • Wenn in GraphQL-Antworten ein Multifield-Fragmentverweis Inhaltsfragmente enthält, die mit keinem in der Abfrage aufgelisteten zulässigen Modell übereinstimmen, geben AEM 6.5.23+ und 6.5 LTS leere JSON-Objekte für diese Einträge zurück, während sie in früheren Versionen vollständig weggelassen werden.
  • Die Markdown-Ausgabe von Rich-Text-Feldern zeigt Unterschiede bei der Behandlung von Leerzeichen, z. B. zusätzliche Leerzeichen oder leere Zeilen zwischen Absätzen oder Blöcken.
  • Der Endpunkt der persistenten Abfrage in AEM 6.5.23+ und 6.5 LTS ist toleranter gegenüber nicht kodierten Sonderzeichen, erfordert jedoch für konsistentes Verhalten weiterhin URL-Kodierung.

Lösung resolution

Gehen Sie wie folgt vor, um dieses Problem zu beheben:

  1. Umgang mit leeren JSON-Objekten, die von Abfragen vom Vereinigungstyp zurückgegeben werden:

    • Client-seitiges Herausfiltern leerer Objekte (Objekte ohne Eigenschaften) bei der Verarbeitung der GraphQL-Antwort.
    • Aktualisieren Sie alternativ die persistierte Abfrage, um Fragmente für alle möglichen referenzierten Modelle einzuschließen, um sicherzustellen, dass relevante Daten für jeden Typ zurückgegeben werden.
  2. Unterschiede bei Markdown-Leerzeichen und Formatierung:

    • Wenn genaue Leerzeichen oder Formatierungen wichtig sind, sollten Sie die HTML- oder JSON-Darstellung des Felds anstelle von Markdown verwenden.
    • Optional können Sie Leerzeichen während der Nachbearbeitung normalisieren, indem Sie wiederholte Leerzeichen oder leere Zeilen vor dem Rendern ausblenden.
  3. Kodierung der persistierten Abfrage:

    • Codieren Sie Sonderzeichen wie Semikolons, Leerzeichen und Doppelpunkte immer in persistenten Suffixen und Variablen gemäß dokumentierten Mustern.
    • Verlassen Sie sich nicht auf eine erhöhte Toleranz für nicht kodierte Zeichen, die in neueren Versionen eingeführt wurden, da dieses Verhalten bei zukünftigen Aktualisierungen nicht garantiert ist.
  4. Überprüfen Sie, ob:

    • Die Client-Anwendung filtert leere Objekte bei Bedarf korrekt aus GraphQL-Antworten heraus.
    • Gerenderter Inhalt wird nach Anwenden von Normalisierungsschritten auf die Markdown-Ausgabe wie erwartet angezeigt.
    • Persistierte Abfragen funktionieren konsistent in allen Umgebungen, indem die Kodierungsanforderungen eingehalten werden.

Hinweise

  • Die beschriebenen Verhaltensweisen werden aufgrund von absichtlichen Änderungen erwartet, die in AEM 6.5.23+ / 6.5 LTS und der aktualisierten GraphQL-Engine eingeführt wurden.
  • Die semantische Konsistenz (korrekte Struktur und Inhalte) wird beibehalten. Eine byte-für-byte-identische Markdown-Ausgabe über Versionen hinweg ist jedoch nicht garantiert.
  • Werden semantische Probleme, wie fehlende Inhalte oder falsche Struktur, beobachtet, sind möglicherweise weitere Untersuchungen erforderlich, da diese eher auf Mängel als auf erwartete Verhaltensänderungen hinweisen könnten.

Verwandtes Lesen

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f