Diferencias en la estructura de respuesta de GraphQL y en la salida de markdown en Adobe Experience Manager
Después de actualizar a AEM 6.5.23+ o 6.5 LTS, se observan diferencias en la estructura de las respuestas de GraphQL para fragmentos de contenido y en el formato de salida de marcado en comparación con versiones anteriores, como AEM 6.5.20. Estos cambios afectan al modo en que se gestionan los objetos vacíos en las consultas de tipo unión y al modo en que se representan los espacios en blanco en los campos Markdown. Para solucionar este problema, controle los objetos vacíos en las respuestas, ajuste el procesamiento de markdown y siga una codificación de consulta persistente coherente.
Descripción description
Entorno
- Producto: Adobe Experience Manager (AEM) Managed Services, AEM Sites
- Versión: 6.5.23+/ 6.5 LTS (incluido SP1/SP2), Versión anterior referenciada: 6.5.20
Problema y síntomas
- En las respuestas de GraphQL, cuando una referencia de fragmento de varios campos contiene fragmentos de contenido que no coinciden con ningún modelo permitido enumerado en la consulta, AEM 6.5.23+ y 6.5 LTS devuelven objetos JSON vacíos para esas entradas, mientras que las versiones anteriores los omiten por completo.
- La salida de Markdown de los campos de texto enriquecido muestra diferencias en la gestión de espacios en blanco, como espacios adicionales o líneas en blanco entre párrafos o bloques.
- El extremo de consultas persistentes en AEM 6.5.23+ y 6.5 LTS es más tolerante con los caracteres especiales no codificados, pero aún requiere la codificación de URL para un comportamiento coherente.
Resolución resolution
Para solucionar este problema, siga estos pasos:
-
Gestión de objetos JSON vacíos devueltos por consultas de tipo unión:
- Filtre los objetos vacíos (objetos sin propiedades) del lado del cliente al procesar la respuesta de GraphQL.
- Como alternativa, actualice la consulta persistente para incluir fragmentos para todos los posibles modelos a los que se hace referencia, a fin de garantizar que se devuelvan los datos relevantes para cada tipo.
-
Diferencias en el espacio en blanco de Markdown y el formato:
- Si el espacio en blanco o el formato exactos son críticos, considere la posibilidad de utilizar la representación HTML o JSON del campo en lugar de Markdown.
- De forma opcional, puede normalizar los espacios en blanco durante el posprocesamiento si contrae los espacios repetidos o las líneas en blanco antes del procesamiento.
-
Codificación de consulta persistente:
- Codifique siempre caracteres especiales en una dirección URL, como punto y coma, espacios y dos puntos, en variables y sufijos de consulta persistentes, según los patrones documentados.
- No confíe en una mayor tolerancia para los caracteres no codificados introducidos en versiones más recientes, ya que este comportamiento no está garantizado en actualizaciones futuras.
-
Compruebe que:
- La aplicación cliente filtra correctamente los objetos vacíos de las respuestas de GraphQL, si es necesario.
- El contenido procesado aparece como se espera después de aplicar los pasos de normalización a la salida de Markdown.
- Las consultas persistentes funcionan de forma coherente en todos los entornos al seguir los requisitos de codificación.
Notas
- Los comportamientos descritos son de esperar debido a los cambios intencionados introducidos en AEM 6.5.23+ / 6.5 LTS y al motor de GraphQL actualizado.
- Se mantiene la coherencia semántica (estructura y contenido correctos); sin embargo, no se garantiza una salida idéntica de Markdown byte a byte en todas las versiones.
- Si se observan problemas semánticos, como falta de contenido o estructura incorrecta, puede ser necesaria una investigación más a fondo, ya que estos podrían indicar defectos en lugar de los cambios de comportamiento esperados.