在 AEM Headless 開發人員歷程的這一部分中,您可以了解如何使用 GraphQL 查詢來存取您的內容片段內容並提供給您的應用程式 ( Headless 傳遞)。
在 AEM Headless 歷程的上一個文件「如何建立內容模型」中,您已了解在 AEM 中建立內容模型的基本知識,所以現在您應該了解如何建立內容結構模型,然後使用 AEM 內容片段模型和內容片段實現該結構。
本文章以這些基本知識為基礎,以便您了解如何使用 AEM GraphQL API 在 AEM 存取您現有的 Headless 內容。
所以…您已經取得所有這些內容,結構整齊 (在內容片段中),正等待提供給您的新應用程式。問題是 - 如何到達那裡?
您需要的是可以找出特定內容為目標的方法,選擇您需要的內容並將其傳回到您的應用程式以進一步處理。
有了 Adobe Experience Manager (AEM) as a Cloud Service,您可以使用 AEM GraphQL API 有選擇地存取內容片段,以僅傳回需要的內容。這表示您可以實現 Headless 傳遞結構化的內容,以便在您的應用程式中使用。
AEM GraphQL API 是根據標準 GraphQL API 規格的自訂實作。
GraphQL 是一種開放原始碼的規格,它提供:
GraphQL 是強式類型 API。這表示所有內容必須按類型清楚結構和組織,以便 GraphQL 了解要存取什麼以及如何存取。資料欄位在 GraphQL 結構描述中定義,其定義內容物件的結構。
然後,GraphQL 端點提供回應 GraphQL 查詢的路徑。
這一切表示您的應用程式可以準確、可靠和有效率地選擇它需要的內容,正是您搭配 AEM 使用時所需要的。
請參閱 GraphQL.org 和 GraphQL.com。
AEM GraphQL API 是根據標準 GraphQL API 規格的自訂版本,特別設定為允許您對內容片段執行 (複雜) 查詢。
使用內容片段,因為內容的結構是根據內容片段模型建立的。這滿足了 GraphQL 的基本要求。
為了實際存取 GraphQL 以用於 AEM (和內容),端點用於提供存取路徑。
然後,透過 AEM GraphQL API 傳回的內容可以供您的應用程式使用。
為了協助您直接輸入和測試查詢,標準 GraphiQL 介面的實作也可與 AEM GraphQL (這可與 AEM 一起安裝) 搭配使用。它提供語法醒目顯示、自動完成、自動建議等功能,以及歷史記錄和線上文件。
AEM GraphQL API 實作是以 GraphQL Java 程式庫為基礎。
內容片段可作為 AEM 結構描述和查詢之 GraphQL 的基礎,如下所示:
這些內容片段模型:
片段參考:
是在定義內容片段模型時可用的特定資料類型。
可參考另一個片段,取決於特定的內容片段模型。
可讓您建立並接著擷取結構化資料。
為了協助設計和開發內容片段模型,您可以在內容片段編輯器中預覽 JSON 輸出。
在開始對您的內容進行查詢之前,您需要:
若要實際在查詢中使用 AEM GraphQL API,我們可以使用兩個非常基本的內容片段模型結構:
如您所見,CEO 和員工欄位參考了人員片段。
以下情況會使用片段模型:
可以在 GraphiQL 介面輸入查詢。您可以從以下任一方式存取查詢編輯器:
http://localhost:4502/aem/graphiql.html
一個簡單的查詢是傳回「公司」結構描述中所有項目的名稱。您在這裡要求所有公司名稱的清單:
query {
companyList {
items {
name
}
}
}
一個稍微複雜的查詢是選擇所有名稱不是「Jobs」的人員。這將篩選出所有名稱沒有 Jobs 的人員。這是使用 EQUALS_NOT 運算子完成 (還有更多):
query {
personList(filter: {
name: {
_expressions: [
{
value: "Jobs"
_operator: EQUALS_NOT
}
]
}
}) {
items {
name
firstName
}
}
}
您還可以建構更複雜的查詢。例如,查詢至少有一名員工名稱為「Smith」的所有公司。此查詢說明了對任何名稱為「Smith」的人員的篩選,從跨巢狀片段傳回資訊:
query {
companyList(filter: {
employees: {
_match: {
name: {
_expressions: [
{
value: "Smith"
}
]
}
}
}
}) {
items {
name
ceo {
name
firstName
}
employees {
name
firstName
}
}
}
}
如需使用 AEM GraphQL API 的完整詳細資訊,以及設定必要的元素,您可以參考:
現在您已經了解如何使用 AEM GraphQL API 存取和查詢 Headless 內容,您現在可以了解如何使用 REST API 存取和更新內容片段的內容。