如何透過 AEM Assets API 更新您的內容 update-your-content

AEM Headless 開發人員歷程的這一部分中,了解如何使用 REST API 存取和更新內容片段的內容。

目前進度 story-so-far

在 AEM Headless 歷程的上一個文件「如何透過 AEM Delivery API 存取您的內容」中,您已了解如何透過 AEM GraphQL API 存取 AEM 中的 Headless 內容,現在您應該:

  • 對 GraphQL 有概略的了解。
  • 了解 AEM GraphQL API 運作方式。
  • 了解一些實際的範例查詢。

本文章以這些基本知識為基礎,以便您了解如何透過 REST API 在 AEM 更新您的現有 Headless 內容。

目標 objective

  • 對象:進階

  • 目標:了解如何使用 REST API 存取和更新內容片段的內容:

    • 介紹 AEM Assets HTTP API。
    • 介紹和討論 API 支援內容片段。
    • 說明 API 的詳細資訊。

為什麼您需要 Assets HTTP API 用於內容片段? why-http-api

在 Headless 歷程的上一個文件中,您已了解如何使用 AEM GraphQL API 透過查詢擷取您的內容。

那麼為什麼需要另一個 API?

Assets HTTP API 確實可讓您​ 讀取 ​您的內容,但也可讓您​ 建立更新 和​ 刪除 ​內容 - GraphQL API 不可能執行的動作。

Adobe Experience Manager as a Cloud Service 最新版本的每個開箱即用安裝中都有提供 Assets REST API。

Assets HTTP API assets-http-api

Assets HTTP API 包含:

  • Assets REST API
  • 包含支援內容片段

Assets HTTP API 的目前實作是以 REST 架構型式為基礎,可讓您透過 CRUD 操作 (建立、讀取、更新、刪除) 存取內容。

透過這些作業,API 讓您將內容服務提供給 JavaScript 前端應用程式,以 Headless CMS (內容管理系統) 操作 Adobe Experience Manager as a Cloud Service。或者任何其他可以執行 HTTP 要求並處理 JSON 回應的應用程式。例如,框架型或自訂的單頁應用程式 (SPA) 需要透過 API 提供的內容,通常採 JSON 格式。

Assets HTTP API 和內容片段 assets-http-api-content-fragments

內容片段用於 Headless 傳遞,內容片段是一種特殊類型的資產。它們用於存取結構化資料,例如文字、數字、日期等。

使用 Assets REST API using-aem-assets-rest-api

存取 access

Assets REST API 使用 /api/assets 端點並需要資產的路徑來存取它 (開頭無 /content/dam)。

  • 這表示要存取以下位置的資產:
    • /content/dam/path/to/asset
  • 您需要要求:
    • /api/assets/path/to/asset

例如,若要存取 /content/dam/wknd/en/adventures/cycling-tuscany,要求 /api/assets/wknd/en/adventures/cycling-tuscany.json

NOTE
存取:
  • /api/assets不需要 ​使用 .model 選擇器。
  • /content/path/to/page 需要 ​使用 .model 選擇器。

操作 operation

HTTP 方法決定要執行的操作:

  • GET - 檢索資產或資料夾的 JSON 表示
  • POST - 建立新資產或資料夾
  • PUT - 更新資產或資料夾的屬性
  • DELETE - 刪除資產或資料夾
NOTE
要求內文和/或 URL 參數可用於設定其中一些操作;例如,定義資料夾或資產應由 POST 要求建立。

API 參考文件中定義了受支援要求的確切格式。

根據您使用的是 AEM 作者環境還是發佈環境,以及您的特定使用案例,使用情況可能會有所不同。

  • 強烈建議建立操作與作者執行個體綁定 (目前沒有辦法複製片段以使用此 API 發佈)。

  • 都可以從兩者傳遞,因為 AEM 僅以 JSON 格式提供要求的內容。

    • 來自 AEM 作者執行個體的儲存和傳遞操作應該足以滿足防火牆後的媒體庫應用程式的需求。

    • 如果是即時 Web 傳遞,則建議使用 AEM 發佈執行個體。

CAUTION
AEM 雲端執行個體上的 Dispatcher 設定可能會封鎖對 /api 的存取。

讀取/傳遞 read-delivery

使用方式:

GET /{cfParentPath}/{cfName}.json

例如:

http://<host>/api/assets/wknd/en/adventures/cycling-tuscany.json

回應是序列化的 JSON,其內容結構與內容片段中的一樣。參考是以參考 URL 的形式傳遞。

可能有兩種類型的讀取操作:

  • 按路徑讀取特定內容片段,這將傳回內容片段的 JSON 表示。
  • 按路徑讀取內容片段資料夾:這將傳回資料夾內所有內容片段的 JSON 表示。

建立 create

使用方式:

POST /{cfParentPath}/{cfName}

內文必須包含要建立的內容片段的 JSON 表示,包括應在內容片段元素上設定的任何初始內容。必須設定 cq:model 屬性,並且它必須指向有效的內容片段模型。未這麼做會導致錯誤。也必須加上標頭 Content-Type,其設定為 application/json

更新 update

使用方式:

PUT /{cfParentPath}/{cfName}

內文必須包含給定內容片段要更新之內容的 JSON 表示。

這可以只是內容片段的標題或描述,或單一元素,或所有元素值和/或中繼資料。

刪除 delete

使用的方式包括:

DELETE /{cfParentPath}/{cfName}

有關使用 AEM Assets REST API 的更多詳細資訊,請參閱以下內容:

  • Adobe Experience Manager Assets HTTP API (其他資源)
  • AEM Assets HTTP API 支援內容片段 (其他資源)

下一步 whats-next

您已完成此部分的 AEM Headless 開發人員歷程,您應該:

  • 了解 AEM Assets HTTP API 的基本知識。
  • 了解此 API 如何支援內容片段。

您應該繼續您的 AEM Headless 歷程,接下來查看文件如何在 AEM Headless 中將您的應用程式和內容組合在一起您將在其中熟悉 AEM 架構基本知識和將應用程式組合在一起所需的工具。

其他資源 additional-resources

recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab