如何透過 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),您可以使用AEM GraphQL API選擇性地存取您的內容片段,以僅傳回您需要的內容。 這表示您可以實現 Headless 傳遞結構化的內容,以便在您的應用程式中使用。

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

GraphQL - 簡介 graphql-introduction

GraphQL 是一種開放原始碼的規格,它提供:

  • 查詢語言,使您能夠從結構化物件中選擇特定內容。
  • 執行階段,使用您的結構化內容來完成這些查詢。

GraphQL 是​ ​類型 API。這表示​ 所有 ​內容必須按類型清楚結構和組織,以便 GraphQL 了解 ​要存取什麼以及如何存取。資料欄位在 GraphQL 結構描述中定義,其定義內容物件的結構。

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

這一切表示您的應用程式可以準確、可靠和有效率地選擇它需要的內容,正是您搭配 AEM 使用時所需要的。

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

AEM GraphQL API aem-graphql-api

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

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

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

為了實際存取 GraphQL 以用於 AEM (和內容),端點用於提供存取路徑。

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

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

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

與 AEM GraphQL API 搭配使用的內容片段 content-fragments-use-with-aem-graphql-api

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

  • 它們使您能夠設計、建立、策劃和發佈可以 Headless 方式傳遞之獨立於頁面的內容。
  • 它們根據內容片段模型,該模型使用選擇的資料類型為產生的片段預先定義結構。
  • 可以使用片段參考資料類型完成額外的結構層,在定義模型時可用。

內容片段模型 content-fragments-models

這些內容片段模型:

  • 啟用 ​後,用於產生結構描述。
  • 提供 GraphQL 所需的資料類型和欄位。它們確保您的應用程式只要求可能的內容並接收預期的內容。
  • 片段參考 ​資料類型可在您的模型中用來參考另一個內容片段,從而引入額外的結構層。

片段參考 fragment-references

片段參考

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

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

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

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

JSON 預覽 json-preview

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

JSON 預覽

實際使用 AEM GraphQL API actually-using-aem-graphiql

初始設定 initial-setup

在開始對您的內容進行查詢之前,您需要:

範例結構 sample-structure

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

  • 公司

    • 名稱 - 文字
    • CEO (人員) - 片段參考
    • 員工 (人員) - 片段參考
  • 人員

    • 名稱 - 文字
    • 名字 - 文字

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

使用的片段模型:

  • 在內容片段編輯器建立內容時
  • 產生您將查詢的 GraphQL 結構描述

在哪裡測試您的查詢 where-to-test-your-queries

查詢可在 GraphiQL介面,例如:

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

GraphiQL 介面

查詢快速入門 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

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2