如何透過 AEM Delivery API 存取您的內容 access-your-content
在 AEM Headless 開發人員歷程的這一部分中,您可以了解如何使用 GraphQL 查詢來存取您的內容片段內容並提供給您的應用程式 ( Headless 傳遞)。
目前進度 story-so-far
在 AEM Headless 歷程的上一個文件「如何建立內容模型」中,您已了解在 AEM 中建立內容模型的基本知識,所以現在您應該了解如何建立內容結構模型,然後使用 AEM 內容片段模型和內容片段實現該結構。
- 認識內容模型相關的概念和術語。
- 了解為什麼 Headless 內容傳遞需要內容模型。
- 了解如何使用 AEM 內容片段模型實現此結構 (和使用內容片段製作內容)。
- 了解如何建立內容模型;基本範例的原則。
本文章以這些基本知識為基礎,以便您了解如何使用 AEM GraphQL API 在 AEM 存取您現有的 Headless 內容。
-
對象:初學者
-
目標:了解如何使用 GraphQL 查詢來存取內容片段的內容。
- 介紹 GraphQL 和 AEM GraphQL API。
- 深入了解 AEM GraphQL API 的詳細資訊。
- 查看一些範例查詢以了解實務運作。
所以您想存取您的內容嗎? so-youd-like-to-access-your-content
所以…您已經取得所有這些內容,結構整齊 (在內容片段中),正等待提供給您的新應用程式。問題是 - 如何到達那裡?
您需要的是可以找出特定內容為目標的方法,選擇您需要的內容並將其傳回到您的應用程式以進一步處理。
有了 Adobe Experience Manager (AEM) as a Cloud Service,您可以使用 AEM GraphQL API 有選擇地存取內容片段,以僅傳回需要的內容。這表示您可以實現 Headless 傳遞結構化的內容,以便在您的應用程式中使用。
GraphQL - 簡介 graphql-introduction
GraphQL 是一種開放原始碼的規格,它提供:
- 查詢語言,使您能夠從結構化物件中選擇特定內容。
- 執行階段,使用您的結構化內容來完成這些查詢。
GraphQL 是強式類型 API。這表示 所有 內容必須按類型清楚結構和組織,以便 GraphQL 了解 要存取什麼以及如何存取。資料欄位在 GraphQL 結構描述中定義,其定義內容物件的結構。
然後,GraphQL 端點提供回應 GraphQL 查詢的路徑。
這一切表示您的應用程式可以準確、可靠和有效率地選擇它需要的內容,正是您搭配 AEM 使用時所需要的。
AEM GraphQL API aem-graphql-api
AEM GraphQL API 是根據標準 GraphQL API 規格的自訂版本,特別設定為允許您對內容片段執行 (複雜) 查詢。
使用內容片段,因為內容的結構是根據內容片段模型建立的。這滿足了 GraphQL 的基本要求。
- 內容片段模型由一個或多個欄位組成。
- 每個欄位都是根據資料類型定義的。
- 內容片段模型用於產生對應的 AEM GraphQL 結構描述。
為了實際存取 GraphQL 以用於 AEM (和內容),端點用於提供存取路徑。
然後,透過 AEM GraphQL API 傳回的內容可以供您的應用程式使用。
為了協助您直接輸入和測試查詢,標準 GraphiQL 介面的實作也可與 AEM GraphQL (這可與 AEM 一起安裝) 搭配使用。它提供語法醒目顯示、自動完成、自動建議等功能,以及歷史記錄和線上文件。
與 AEM GraphQL API 搭配使用的內容片段 content-fragments-use-with-aem-graphql-api
內容片段可作為 AEM 結構描述和查詢之 GraphQL 的基礎,如下所示:
- 它們使您能夠設計、建立、策劃和發佈可以 Headless 方式傳遞之獨立於頁面的內容。
- 它們根據內容片段模型,該模型使用選擇的資料類型為產生的片段預先定義結構。
- 可以使用片段參考資料類型完成額外的結構層,在定義模型時可用。
內容片段模型 content-fragments-models
這些內容片段模型:
- 啟用 後,用於產生結構描述。
- 提供 GraphQL 所需的資料類型和欄位。它們確保您的應用程式只要求可能的內容並接收預期的內容。
- 片段參考 資料類型可在您的模型中用來參考另一個內容片段,從而引入額外的結構層。
片段參考 fragment-references
片段參考:
-
是在定義內容片段模型時可用的特定資料類型。
-
可參考另一個片段,取決於特定的內容片段模型。
-
可讓您建立並接著擷取結構化資料。
- 當定義為 multifeed 時,主片段可以參考 (擷取) 多個子片段。
JSON 預覽 json-preview
為了協助設計和開發內容片段模型,您可以在內容片段編輯器中預覽 JSON 輸出。
實際使用 AEM GraphQL API actually-using-aem-graphiql
初始設定 initial-setup
在開始對您的內容進行查詢之前,您需要:
-
啟用您的端點
- 使用「工具 > 一般 > GraphQL」
- 啟用 GraphQL 端點
- 這也會啟用 GraphiQL IDE。
範例結構 sample-structure
若要實際在查詢中使用 AEM GraphQL API,我們可以使用兩個非常基本的內容片段模型結構:
-
公司
- 名稱 - 文字
- CEO (人員) - 片段參考
- 員工 (人員) - 片段參考
-
人員
- 名稱 - 文字
- 名字 - 文字
如您所見,CEO 和員工欄位參考了人員片段。
以下情況會使用片段模型:
- 在內容片段編輯器建立內容時
- 產生您將查詢的 GraphQL 結構描述
在哪裡測試您的查詢 where-to-test-your-queries
可以在 GraphiQL 介面輸入查詢。您可以從以下任一方式存取查詢編輯器:
- 工具 > 一般 > GraphQL 查詢編輯器
- 直接;例如
http://localhost:4502/aem/graphiql.html
查詢快速入門 getting-Started-with-queries
一個簡單的查詢是傳回「公司」結構描述中所有項目的名稱。您在這裡要求所有公司名稱的清單:
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 的完整詳細資訊,以及設定必要的元素,您可以參考:
- 了解如何將 GraphQL 與 AEM 搭配使用
- 範例內容片段結構
- 了解搭配使用 GraphQL 與 AEM - 範例內容和查詢
下一步 whats-next
現在您已經了解如何使用 AEM GraphQL API 存取和查詢 Headless 內容,您現在可以了解如何使用 REST API 存取和更新內容片段的內容。
其他資源 additional-resources
-
AEM Headless 快速入門 - 此為簡短的教學影片系列,概述如何使用 AEM 的 Headless 功能,包括內容模型和 GraphQL。