Diferenças na estrutura de resposta do GraphQL e na saída do Markdown no Adobe Experience Manager
Depois de atualizar para o AEM 6.5.23+ ou 6.5 LTS, são observadas diferenças na estrutura das respostas do GraphQL para fragmentos de conteúdo e na formatação de saída do Markdown em comparação às versões anteriores, como o AEM 6.5.20. Essas alterações afetam como os objetos vazios são tratados em consultas do tipo união e como o espaço em branco é renderizado em campos de marcação. Para corrigir esse problema, manipule objetos vazios nas respostas, ajuste o processamento de Markdown e siga a codificação de consulta persistente consistente.
Descrição description
Ambiente
- Produto: Adobe Experience Manager (AEM) Managed Services, AEM Sites
- Versão: 6.5.23+/ 6.5 LTS (incluindo SP1/SP2), versão anterior referenciada: 6.5.20
Problema e sintomas
- Nas respostas do GraphQL, quando uma referência de fragmento de vários campos contém fragmentos de conteúdo que não correspondem a nenhum modelo permitido listado na consulta, o AEM 6.5.23+ e 6.5 LTS retornam objetos JSON vazios para essas entradas, enquanto as versões anteriores os omitem totalmente.
- A saída do Markdown de campos de rich text mostra as diferenças no tratamento de espaços em branco, como espaços adicionais ou linhas em branco entre parágrafos ou blocos.
- O endpoint de consulta persistente no AEM 6.5.23+ e 6.5 LTS é mais tolerante a caracteres especiais não codificados, mas ainda requer codificação de URL para comportamento consistente.
Resolução resolution
Para corrigir esse problema, siga estas etapas:
-
Manipulação de objetos JSON vazios retornados por consultas do tipo união:
- Filtrar objetos vazios (objetos sem propriedades) no lado do cliente ao processar a resposta do GraphQL.
- Como alternativa, atualize a consulta persistente para incluir fragmentos de todos os modelos referenciados possíveis para garantir que os dados relevantes sejam retornados para cada tipo.
-
Diferenças no espaço em branco e na formatação do Markdown:
- Se o espaço em branco ou a formatação exatos forem críticos, considere usar a representação HTML ou JSON do campo em vez do Markdown.
- Como opção, normalize os espaços em branco durante o pós-processamento recolhendo espaços repetidos ou linhas em branco antes da renderização.
-
Codificação de consulta persistente:
- Sempre codifique caracteres especiais com URL, como ponto e vírgula, espaços e dois pontos, em sufixos e variáveis de consulta persistentes, de acordo com padrões documentados.
- Não se baseie no aumento da tolerância a caracteres não codificados introduzidos em versões mais recentes, pois esse comportamento não é garantido em atualizações futuras.
-
Verifique se:
- O aplicativo cliente filtra corretamente os objetos vazios das respostas do GraphQL, se necessário.
- O conteúdo renderizado aparece conforme esperado após a aplicação das etapas de normalização à saída do Markdown.
- As consultas persistentes funcionam de forma consistente em todos os ambientes seguindo os requisitos de codificação.
Notas
- Os comportamentos descritos são esperados devido a alterações intencionais introduzidas no AEM 6.5.23+ / 6.5 LTS e no mecanismo atualizado do GraphQL.
- A consistência semântica (estrutura e conteúdo corretos) é mantida; no entanto, a saída idêntica do Markdown byte por byte em todas as versões não é garantida.
- Se problemas semânticos, como falta de conteúdo ou estrutura incorreta, forem observados, pode ser necessária uma investigação mais aprofundada, pois podem indicar defeitos, em vez de alterações comportamentais esperadas.