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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Leitura relacionada

recommendation-more-help
experience-cloud-kcs-help-kbarticles