Differenze nella struttura di risposta di GraphQL e nell’output markdown in Adobe Experience Manager

Dopo l’aggiornamento ad AEM 6.5.23+ o 6.5 LTS, si osservano differenze nella struttura delle risposte GraphQL per i frammenti di contenuto e nella formattazione dell’output markdown rispetto alle versioni precedenti, come AEM 6.5.20. Queste modifiche influiscono sulla gestione degli oggetti vuoti nelle query di tipo unione e sulla modalità di rendering degli spazi vuoti nei campi markdown. Per risolvere questo problema, gestisci gli oggetti vuoti nelle risposte, regola l’elaborazione del markdown e segui una codifica coerente delle query persistenti.

Descrizione description

Ambiente

  • Prodotto: Adobe Experience Manager (AEM) Managed Services, AEM Sites
  • Versione: 6.5.23+/ 6.5 LTS (incluso SP1/SP2), versione precedente a cui si fa riferimento: 6.5.20

Problema e sintomi

  • Nelle risposte di GraphQL, quando un riferimento a un frammento con più campi contiene frammenti di contenuto che non corrispondono a nessun modello consentito elencato nella query, AEM 6.5.23+ e 6.5 LTS restituiscono oggetti JSON vuoti per tali voci, mentre le versioni precedenti li omettono completamente.
  • L’output Markdown dai campi in formato Rich Text mostra differenze nella gestione degli spazi, ad esempio spazi aggiuntivi o righe vuote tra paragrafi o blocchi.
  • L’endpoint di query persistente in AEM 6.5.23+ e 6.5 LTS tollera maggiormente i caratteri speciali non codificati, ma richiede comunque la codifica URL per un comportamento coerente.

Risoluzione resolution

Per risolvere il problema, effettua le seguenti operazioni:

  1. Gestione di oggetti JSON vuoti restituiti da query di tipo unione:

    • Escludi gli oggetti vuoti (oggetti senza proprietà) sul lato client durante l’elaborazione della risposta di GraphQL.
    • In alternativa, aggiorna la query persistente per includere frammenti per tutti i possibili modelli di riferimento, in modo che vengano restituiti dati rilevanti per ogni tipo.
  2. Differenze nello spazio vuoto e nella formattazione di Markdown:

    • Se lo spazio vuoto esatto o la formattazione sono fondamentali, è consigliabile utilizzare la rappresentazione HTML o JSON del campo invece di Markdown.
    • Facoltativamente, normalizzare gli spazi durante la post-elaborazione comprimendo spazi ripetuti o righe vuote prima del rendering.
  3. Codifica query persistente:

    • Codifica sempre in URL i caratteri speciali, ad esempio punti e virgola, spazi e due punti, nei suffissi di query e nelle variabili persistenti, in base ai pattern documentati.
    • Non fare affidamento su una maggiore tolleranza per i caratteri non codificati introdotti nelle versioni più recenti, in quanto questo comportamento non è garantito negli aggiornamenti futuri.
  4. Verifica che:

    • Se necessario, l’applicazione client filtra correttamente gli oggetti vuoti dalle risposte di GraphQL.
    • Il contenuto renderizzato viene visualizzato come previsto dopo l’applicazione dei passaggi di normalizzazione all’output di Markdown.
    • Le query persistenti funzionano in modo coerente in tutti gli ambienti seguendo i requisiti di codifica.

Note

  • I comportamenti descritti sono attesi a causa di modifiche intenzionali introdotte in AEM 6.5.23+ / 6.5 LTS e nel motore GraphQL aggiornato.
  • Viene mantenuta la coerenza semantica (struttura e contenuto corretti); tuttavia, l'output di Markdown identico byte per byte tra le versioni non è garantito.
  • Se si osservano problemi semantici, come contenuto mancante o struttura errata, possono essere necessarie ulteriori indagini, in quanto questi potrebbero indicare difetti piuttosto che cambiamenti comportamentali previsti.

Lettura correlata

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