Différences entre la structure de réponse de GraphQL et la sortie Markdown dans Adobe Experience Manager
Après la mise à niveau vers AEM 6.5.23+ ou 6.5 LTS, des différences sont observées dans la structure des réponses de GraphQL pour les fragments de contenu et dans la mise en forme de sortie Markdown par rapport aux versions antérieures, telles qu’AEM 6.5.20. Ces modifications affectent la manière dont les objets vides sont traités dans les requêtes de type union et dont les espaces sont rendus dans les champs Markdown. Pour résoudre ce problème, gérez les objets vides dans les réponses, ajustez le traitement Markdown et suivez un codage de requête persistante cohérent.
Description description
Environnement
- Produit : Adobe Experience Manager (AEM) Managed Services, AEM Sites
- Version : 6.5.23+/ 6.5 LTS (y compris SP1/SP2), Version précédente référencée : 6.5.20
Problème et symptômes
- Dans les réponses GraphQL, lorsqu’une référence de fragment à plusieurs champs contient des fragments de contenu qui ne correspondent à aucun modèle autorisé répertorié dans la requête, les LTS AEM 6.5.23+ et 6.5 renvoient des objets JSON vides pour ces entrées, tandis que les versions antérieures les omettent entièrement.
- La sortie Markdown des champs de texte enrichi affiche des différences dans la gestion des espaces, telles que des espaces supplémentaires ou des lignes vides entre les paragraphes ou les blocs.
- Le point d’entrée de la requête persistante dans AEM LTS 6.5.23+ et 6.5 est plus tolérant aux caractères spéciaux non codés, mais il nécessite toujours un codage d’URL pour un comportement cohérent.
Résolution resolution
Pour résoudre ce problème, procédez comme suit :
-
Gérer les objets JSON vides renvoyés par des requêtes de type union :
- Filtrez les objets vides (objets sans propriétés) côté client lors du traitement de la réponse GraphQL.
- Vous pouvez également mettre à jour la requête persistante afin d’inclure des fragments pour tous les modèles référencés possibles afin de vous assurer que les données pertinentes sont renvoyées pour chaque type.
-
Différences entre les espaces Markdown et la mise en forme :
- Si un espace blanc ou une mise en forme exacts sont essentiels, pensez à utiliser la représentation HTML ou JSON du champ au lieu de Markdown.
- Vous pouvez éventuellement normaliser les espaces pendant le post-traitement en réduisant les espaces répétés ou les lignes vides avant le rendu.
-
Encodage de requête persistante :
- Encodez toujours des caractères spéciaux par URL, tels que des points-virgules, des espaces et des deux-points, dans les suffixes et variables de requête persistante, en fonction de modèles documentés.
- Ne comptez pas sur une tolérance accrue pour les caractères non codés introduits dans les versions plus récentes, car ce comportement n’est pas garanti lors des mises à jour ultérieures.
-
Vérifiez que :
- L’application cliente filtre correctement les objets vides des réponses de GraphQL, si nécessaire.
- Le contenu rendu apparaît comme prévu après l’application des étapes de normalisation à la sortie Markdown.
- Les requêtes persistantes fonctionnent de manière cohérente dans tous les environnements en suivant les exigences de codage.
Notes
- Les comportements décrits sont attendus en raison de modifications intentionnelles introduites dans AEM 6.5.23+ / 6.5 LTS et le moteur GraphQL mis à jour.
- La cohérence sémantique (structure et contenu corrects) est conservée ; cependant, une sortie Markdown identique d’un octet à l’autre entre les versions n’est pas garantie.
- Si des problèmes sémantiques, tels qu’un contenu manquant ou une structure incorrecte, sont observés, une enquête plus approfondie peut être nécessaire, car ils pourraient indiquer des défauts plutôt que des changements comportementaux attendus.