如何通过 AEM Assets API 更新您的内容 update-your-content

AEM Headless 开发人员历程的这一部分中,了解如何使用 REST API 访问和更新内容片段的内容。

迄今为止的故事 story-so-far

在 AEM Headless 历程的上一个文档如何通过 AEM 交付 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无法执行的操作。

Assets REST API适用于安装最新Adobe Experience Manager版本的每个现成版本。

Assets HTTP API assets-http-api

Assets HTTP API 包含:

  • Assets REST API
  • 包括对内容片段的支持

Assets HTTP API 的当前实施基于 REST 架构样式,并使您能够通过 CRUD 操作(创建、读取、更新、删除)访问内容(存储在 AEM 中)。

通过这些操作,API允许您通过向Adobe Experience Manager前端应用程序提供内容服务,将JavaScript作为Headless CMS(内容管理系统)运行。 或者,任何其他可以执行 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的访问。
NOTE
有关更多详细信息,请参阅 API 引用。具体而言,Adobe Experience Manager Assets 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 属性,并且该属性必须指向有效的内容片段模型。如果不这样做,将导致出错。此外,还必须添加一个设置为 application/json 的标头 Content-Type

更新 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之旅,接下来查看文档How to Live with Your Headless Application,您实际上是将AEM Headless项目上线了!

其他资源 additional-resources

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