在 無AEM頭開發者之旅, 您可以學習如何使用GraphQL查詢訪問內容片段的內容並將其饋送到您的應用(無頭傳遞)。
此功能的某些功能在預發行渠道中可用。 特別是與永續查詢相關的功能。
查看 預發行渠道文檔 有關如何為您的環境啟用該功能的資訊。
在前一篇無頭旅AEM程中, 如何對內容建模 您在中學習了內容建模的基礎知識AEM,因此您現在應該瞭解如何對內容結構建模,然後使用內容片段模型和內容片AEM段來實現該結構:
本文基於這些基礎知識,因此您可以瞭解如何使用AEMGraphQL API訪問現有無AEM頭內容。
所以……你擁有所有這些內容,結構整齊(在內容片段中),只是在等待輸入新應用。 問題是,怎麼去?
您需要的是一種方法,以特定內容為目標,選擇所需內容並將其返回到您的應用程式以進行進一步處理。
利用Adobe Experience Manager(AEM)as a Cloud Service,您可以使用AEMGraphQL API有選擇地訪問內容片段,以僅返回所需內容。 這意味著您可以實現結構化內容的無頭傳送,以便在您的應用程式中使用。
GraphQL APIAEM是基於標準GraphQL API規範的自定義實現。
GraphQL是一種開源規範,它提供:
GraphQL是 強烈 類型化API。 這意味著 全部 內容必須按類型明確地進行結構化和組織,以便GraphQL 理解 如何訪問以及如何訪問。 資料欄位在GraphQL架構中定義,用於定義內容對象的結構。
然後,GraphQL端點提供響應GraphQL查詢的路徑。
所有這些都意味著您的應用能夠準確、可靠、高效地選擇它需要的內容 — 這正是您使用時需要的AEM內容。
請參閱 圖形QL.org和 圖形QL.com。
GraphQL API是基於標準AEMGraphQL API規範的自定義版本,特別配置為允許您對內容片段執行(複雜)查詢。
使用內容片段,因為內容是根據內容片段模型構建的。 這滿足了GraphQL的基本要求。
要實際訪問GraphQLAEM(和內容),使用端點提供訪問路徑。
通過GraphQL API返回的AEM內容,然後可供應用程式使用。
為幫助您直接輸入和test查詢,標準GraphiQL介面的實現也可用於AEMGraphQL(可隨附安AEM裝)。 它提供語法突出顯示、自動完成、自動建議等功能,以及歷史記錄和線上文檔。
GraphQLAEM API實現基於GraphQL Java庫。
內容片段可用作架構和查詢的GraphQLAEM的基礎,如下所示:
以下內容片段模型:
的 片段引用:
是定義內容片段模型時可用的特定資料類型。
引用另一段,取決於特定內容段模型。
允許您建立和檢索結構化資料。
要幫助設計和開發內容片段模型,可以在內容片段編輯器中預覽JSON輸出。
在開始查詢內容之前,您需要:
啟用終結點
安裝GraphiQL(如果需要)
要在查詢中實AEM際使用GraphQL API,我們可以使用兩種非常基本的內容片段模型結構:
如您所見,「CEO」(CEO)和「員工」(Employees)欄位,引用「人員」(Person)片段。
將使用碎片模型:
查詢可以在GraphiQL介面中輸入。 可以從以下任一位置訪問查詢編輯器:
http://localhost:4502/aem/graphiql.html
直接查詢是返回公司架構中所有條目的名稱。 在此,您請求列出所有公司名稱:
query {
companyList {
items {
name
}
}
}
一個稍複雜的查詢是選擇沒有「Jobs」名稱的所有人員。 這將篩選所有名稱不為Job的人員。 這是使用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
}
}
}
}
有關使用GraphQL API的完AEM整詳細資訊,以及配置必要的元素,可參考:
現在,您已經學會了如何使用GraphQL API訪問和查詢AEM無頭內容 瞭解如何使用REST API訪問和更新內容片段的內容。