Verschillen in de GraphQL-responsstructuur en de markeringsuitvoer in Adobe Experience Manager
Na een upgrade naar AEM 6.5.23+ of 6.5 LTS worden verschillen waargenomen in de structuur van GraphQL-reacties voor inhoudsfragmenten en in de opmaak van de markeringsuitvoer ten opzichte van eerdere versies, zoals AEM 6.5.20. Deze wijzigingen zijn van invloed op de manier waarop lege objecten worden afgehandeld in query's van het type union en hoe witruimte wordt gerenderd in markeringsvelden. U kunt dit probleem verhelpen door lege objecten in reacties te verwerken, de markeringsverwerking aan te passen en een consistente, doorlopende querycodering te volgen.
Beschrijving description
Omgeving
- Product: Adobe Experience Manager (AEM) Managed Services, AEM Sites
- Versie: 6.5.23+/ 6.5 LTS (inclusief SP1/SP2), vorige versie waarnaar wordt verwezen: 6.5.20.
Uitgave en symptomen
- Als een fragmentverwijzing met meerdere velden in GraphQL-antwoorden inhoudsfragmenten bevat die niet overeenkomen met een toegestaan model dat in de query wordt vermeld, retourneert AEM 6.5.23+ en 6.5 LTS lege JSON-objecten voor die vermeldingen, terwijl eerdere versies deze geheel weglaten.
- Als u de uitvoer van opmaakcodes uit opgemaakte tekstvelden opsomt, zijn er verschillen in de verwerking van witruimte, zoals extra spaties of lege regels tussen alinea's of blokken.
- Het voortgezette vraageindpunt in AEM 6.5.23+ en 6.5 LTS is toleranter van niet gecodeerde speciale karakters, maar het vereist nog URL het coderen voor verenigbaar gedrag.
Resolutie resolution
Ga als volgt te werk om dit probleem op te lossen:
-
Behandeling van lege JSON-objecten die door union-type query's zijn geretourneerd:
- Filter lege objecten (objecten zonder eigenschappen) aan de clientzijde wanneer u de GraphQL-reactie verwerkt.
- U kunt ook de persisted query bijwerken om fragmenten op te nemen voor alle mogelijke modellen waarnaar wordt verwezen, om ervoor te zorgen dat relevante gegevens worden geretourneerd voor elk type.
-
Verschillen in witruimte en opmaak van markeringen:
- Als exacte witruimte of opmaak essentieel is, kunt u de HTML- of JSON-weergave van het veld gebruiken in plaats van Markdown.
- U kunt witruimte desgewenst normaliseren tijdens nabewerking door herhaalde spaties of lege regels samen te vouwen voordat deze worden gerenderd.
-
Blijvende querycodering:
- Codeer altijd speciale karakters, zoals puntkomma's, ruimten, en dubbelepunten, in persistente vraagachtervoegsels en variabelen, volgens gedocumenteerde patronen.
- Vertrouw niet op de verhoogde tolerantie voor niet-gecodeerde tekens die in nieuwere versies zijn geïntroduceerd, aangezien dit gedrag niet wordt gegarandeerd in toekomstige updates.
-
Controleren of:
- De clienttoepassing filtert lege objecten correct uit GraphQL-reacties, indien nodig.
- Gerenderde inhoud wordt weergegeven zoals u had verwacht nadat u normaliseringsstappen hebt toegepast op de uitvoer van Markering.
- Blijvende query's functioneren consistent in verschillende omgevingen door de coderingsvereisten te volgen.
Nota's
- De beschreven gedragingen zijn te verwachten als gevolg van opzettelijke wijzigingen die zijn aangebracht in AEM 6.5.23+ / 6.5 LTS en de bijgewerkte GraphQL-engine.
- semantische consistentie (correcte structuur en inhoud) wordt gehandhaafd; byte-voor-byte identieke uitvoer van Markering in verschillende versies is echter niet gegarandeerd.
- Indien semantische problemen, zoals ontbrekende inhoud of onjuiste structuur, worden waargenomen, kan nader onderzoek nodig zijn, aangezien deze eerder op afwijkingen dan op verwachte gedragsveranderingen kunnen wijzen.