在 AEM無頭開發者歷程, 您可以了解如何使用GraphQL查詢來存取內容片段的內容,並將其饋送至您的應用程式(無周邊傳送)。
在AEM無頭歷程的上一份檔案中, 如何建立內容模型 您已了解AEM中內容模型的基本知識,因此您現在應了解如何建立內容結構模型,然後使用AEM內容片段模型和內容片段來實現該結構:
本文以這些基本知識為基礎,讓您了解如何使用AEM GraphQL API存取AEM中現有的無周邊內容。
所以……您擁有所有這些內容,結構整齊(位於內容片段中),而且只是在等待新應用程式的摘要。 問題是,怎麼去?
您需要的是鎖定特定內容、選取所需內容,然後將其傳回至應用程式以進行進一步處理的方式。
透過Adobe Experience Manager(AEM),您可以使用AEM GraphQL API,選擇性地存取內容片段,以僅傳回您需要的內容。 這表示您可以實現結構化內容的無頭傳送,以便用於您的應用程式。
AEM GraphQL API是根據標準GraphQL API規格,自訂的實作。
GraphQL是開放原始碼規範,提供:
GraphQL是 強烈 輸入API。 這表示 all 內容必須依類型清楚地架構和組織,以便GraphQL 理解 存取的項目及方式。 資料欄位是在GraphQL結構中定義的,可定義內容物件的結構。
然後,GraphQL端點會提供回應GraphQL查詢的路徑。
這些都表示您的應用程式能夠準確、可靠且有效地選取所需內容,與AEM搭配使用時,為您所需的內容。
請參閱 GraphQL.org和 GraphQL.com。
AEM GraphQL API是以標準GraphQL API規格為基礎的自訂版本,經特別設定,可讓您對內容片段執行(複雜)查詢。
內容片段是使用的,因為內容是根據內容片段模型建構。 這滿足了GraphQL的基本要求。
若要實際存取AEM適用的GraphQL(和內容),會使用端點來提供存取路徑。
透過AEM GraphQL API傳回的內容,便可供您的應用程式使用。
為協助您直接輸入和測試查詢,標準GraphiQL介面的實作也可與AEM GraphQL搭配使用(這可與AEM一併安裝)。 它提供語法醒目提示、自動完成、自動建議等功能,以及歷史記錄和線上檔案。
AEM GraphQL API實作以GraphQL Java程式庫為基礎。
內容片段可作為AEM結構和查詢的GraphQL基礎,如下:
以下內容片段模型:
此 片段參考:
是定義內容片段模型時可用的特定資料類型。
參考另一個片段,取決於特定內容片段模型。
可讓您建立並擷取結構化資料。
若要協助您設計和開發內容片段模型,您可以在內容片段編輯器中預覽JSON輸出。
開始使用內容查詢之前,您需要:
啟用端點
安裝GraphiQL(如果需要)
若要在查詢中實際使用AEM GraphQL API,我們可以使用兩個非常基本的內容片段模型結構:
如您所見,CEO和員工欄位,參考人員片段。
將使用片段模型:
查詢可在GraphiQL介面中輸入,例如:
http://localhost:4502/content/graphiql.html
直接的查詢是返回公司架構中所有條目的名稱。 您可在此處要求所有公司名稱的清單:
query {
companyList {
items {
name
}
}
}
更複雜的查詢是選擇沒有「工作」名稱的所有人員。 這會篩選所有名稱不為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存取和查詢無周邊內容 了解如何使用REST API存取及更新內容片段的內容.