Adobe Experience Manager中GraphQL回應結構和Markdown輸出的差異
升級至AEM 6.5.23+或6.5 LTS後,在內容片段的GraphQL回應結構以及Markdown輸出格式中,會發現與舊版(例如AEM 6.5.20)有所差異。 這些變更會影響聯合型別查詢中處理空白物件的方式,以及Markdown欄位中空白字元的呈現方式。 若要修正此問題,請處理回應中的空白物件、調整Markdown處理,並遵循一致的持續查詢編碼。
說明 description
環境
- 產品: Adobe Experience Manager (AEM) Managed Services、AEM Sites
- 版本:6.5.23+/ 6.5 LTS (包括SP1/SP2),參考的先前版本:6.5.20
問題和症狀
- 在GraphQL回應中,當多欄位片段參考包含的內容片段不符合查詢中列出的任何允許模式時,AEM 6.5.23+和6.5 LTS會傳回這些專案的空白JSON物件,而舊版則完全省略它們。
- RTF欄位的Markdown輸出會顯示空白字元處理的差異,例如段落或區塊之間的額外空格或空白行。
- AEM 6.5.23+和6.5 LTS中的持續查詢端點對於未編碼的特殊字元較容忍,但仍需要URL編碼才能維持一致行為。
解決方法 resolution
若要修正此問題,請遵循下列步驟:
-
處理聯合型別查詢傳回的空JSON物件:
- 處理GraphQL回應時,篩選出使用者端上的空白物件(沒有屬性的物件)。
- 或者,更新持續查詢以包含所有可能參考模型的片段,以確保為每個型別傳回相關資料。
-
Markdown空白字元與格式的差異:
- 如果精確的空白字元或格式相當重要,請考慮使用HTML或JSON欄位表示法,而非Markdown。
- 或者,在轉譯前,透過收合重複的空格或空白行在後處理期間標準化空白字元。
-
持久查詢編碼:
- 根據記錄的模式,一律在持續存在的查詢尾碼和變數中以URL編碼特殊字元,例如分號、空格和冒號。
- 請勿依賴較新版本中引進的未編碼字元容忍度提高,因為未來更新中並不保證會發生此行為。
-
確認:
- 必要時,使用者端應用程式可正確地從GraphQL回應中篩選出空物件。
- 將標準化步驟套用至Markdown輸出後,呈現的內容會如預期顯示。
- 透過遵循編碼要求,持續查詢在各個環境中穩定地運作。
附註
- 由於AEM 6.5.23+ / 6.5 LTS和更新的GraphQL引擎中引入了有意的變更,預期會出現上述行為。
- 維持語意一致性(正確的結構和內容),但不保證各版本之間的位元組相同Markdown輸出。
- 如果發現語意問題(例如遺漏內容或結構不正確),則可能需要進一步調查,因為這些問題可能表示有缺陷,而不是預期的行為變更。
3d58f420-19b5-47a0-a122-5c9dab55ec7f