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:
-
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.
-
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.
-
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.
-
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.