如何透過AEM傳送API存取您的內容

AEM無周邊開發人員歷程的這部分中,您可以了解如何使用GraphQL查詢來存取內容片段的內容,並將其饋送至您的應用程式(無周邊傳送)。

迄今為止的故事

在AEM無頭歷程的上一份檔案中,您如何對您的內容建立模型已了解AEM中內容模型的基本知識,因此您現在應了解如何對內容結構建立模型,然後使用AEM內容片段模型和內容片段來實現該結構:

  • 識別與內容模型相關的概念和術語。
  • 了解為何需要建立內容模型才能傳送無頭式內容。
  • 了解如何使用AEM內容片段模型(以及使用內容片段製作內容)來實現此結構。
  • 了解如何建立內容模型;基本樣本的原則。

本文以這些基本知識為基礎,讓您了解如何使用AEM GraphQL API存取AEM中現有的無周邊內容。

  • 對象:入門者
  • 目標:了解如何使用AEM GraphQL查詢存取內容片段的內容:
    • 導入GraphQL和AEM GraphQL API。
    • 深入了解AEM GraphQL API的詳細資訊。
    • 查看一些範例查詢,了解實際運作方式。

那麼,您想要訪問您的內容?

所以……您擁有所有這些內容,結構整齊(位於內容片段中),而且只是在等待新應用程式的摘要。 問題是,怎麼去?

您需要的是鎖定特定內容、選取所需內容,然後將其傳回至應用程式以進行進一步處理的方式。

以Adobe Experience Manager(AEM)為Cloud Service,您可以使用AEM GraphQL API,選擇性地存取內容片段,以只傳回您需要的內容。 這表示您可以實現結構化內容的無頭傳送,以便用於您的應用程式。

注意

AEM GraphQL API是根據標準GraphQL API規格,自訂的實作。

GraphQL — 簡介

GraphQL是開放原始碼規範,提供:

  • 一種查詢語言,可讓您從結構化物件中選取特定內容。
  • 一個運行時,用您的結構化內容來完成這些查詢。

GraphQL是​強烈​類型API。 這表示​所有​內容必須依類型清楚地結構化和組織,以便GraphQL 了解​要存取的內容及方式。 資料欄位是在GraphQL結構中定義的,可定義內容物件的結構。

然後,GraphQL端點會提供回應GraphQL查詢的路徑。

這些都表示您的應用程式能夠準確、可靠且有效地選取所需內容,與AEM搭配使用時,為您所需的內容。

注意

請參閱​GraphQL.org和​GraphQL.com。

AEM GraphQL API

AEM GraphQL API是以標準GraphQL API規格為基礎的自訂版本,經特別設定,可讓您對內容片段執行(複雜)查詢。

內容片段是使用的,因為內容是根據內容片段模型建構。 這滿足了GraphQL的基本要求。

  • 內容片段模型是由一或多個欄位所建立。
    • 每個欄位都根據資料類型定義。
  • 內容片段模型用於產生對應的AEM GraphQL結構。

若要實際存取AEM適用的GraphQL(和內容),會使用端點來提供存取路徑。

透過AEM GraphQL API傳回的內容,便可供您的應用程式使用。

為協助您直接輸入和測試查詢,標準GraphiQL介面的實作也可與AEM GraphQL搭配使用(這可與AEM一併安裝)。 它提供語法醒目提示、自動完成、自動建議等功能,以及歷史記錄和線上檔案。

注意

AEM GraphQL API實作以GraphQL Java程式庫為基礎。

與AEM GraphQL API搭配使用的內容片段

內容片段可作為AEM結構和查詢的GraphQL基礎,如下:

  • 它們可讓您設計、建立、組織和發佈不受頁面影響的內容,而這些內容可無端傳送。
  • 它們以內容片段模型為基礎,該模型使用一系列資料類型預先定義產生片段的結構。
  • 可使用「片段參考」資料類型(定義模型時可用)實現其他結構層。

內容片段模型

以下內容片段模型:

  • 一次​Enabled,用於產生結構。
  • 提供GraphQL所需的資料類型和欄位。 它們可確保您的應用程式只要求可能的項目,並接收預期的項目。
  • 資料類型​片段參考​可在模型中使用以參考其他內容片段,因此引入其他層級的結構。

片段參考

片段參考:

  • 是定義內容片段模型時可用的特定資料類型。

  • 參考另一個片段,取決於特定內容片段模型。

  • 可讓您建立並擷取結構化資料。

    • 定義為​multifeed​時,主片段可以參照(擷取)多個子片段。

JSON預覽

若要協助您設計和開發內容片段模型,您可以在內容片段編輯器中預覽JSON輸出。

JSON預

實際使用AEM GraphQL API

初始設定

開始使用內容查詢之前,您需要:

範例結構

若要在查詢中實際使用AEM GraphQL API,我們可以使用兩個非常基本的內容片段模型結構:

  • 公司
    • 名稱 — 文字
    • CEO(人員) — 片段參考
    • 員工(人員) — 片段參考
  • 人員
    • 名稱 — 文字
    • 名字 — 文字

如您所見,CEO和員工欄位,參考人員片段。

將使用片段模型:

  • 在內容片段編輯器中建立內容時
  • 生成要查詢的GraphQL結構

在何處測試查詢

查詢可在GraphiQL介面中輸入,例如:

  • http://localhost:4502/content/graphiql.html

GraphiQL介

查詢快速入門

直接的查詢是返回公司架構中所有條目的名稱。 您可在此處要求所有公司名稱的清單:

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
  • 範例內容片段結構
  • 學習如何搭配AEM使用GraphQL — 範例內容與查詢

下一步是什麼

現在您已了解如何使用AEM GraphQL API存取和查詢無周邊內容,您現在可以了解如何使用REST API存取和更新內容片段的內容。

其他資源

本頁內容