了解资产HTTP API中对内容片段的支持,HTTP API是AEM的一项重要无头交付功能。
的 资产REST API 允许开发人员通过CRUD操作(创建、读取、更新、删除),直接通过HTTP API访问内容(存储在AEM中)。
该API允许您通过向JavaScript前端应用程序提供内容服务,将Adobe Experience Manager as a Cloud Service作为无头CMS(内容管理系统)进行操作。 或任何可以执行HTTP请求并处理JSON响应的其他应用程序。
例如, 单页应用程序(SPA)、基于框架或自定义的HTTP API中提供的内容,通常采用JSON格式。
While AEM核心组件 提供一个非常全面、灵活且可自定义的API,该API可为此目的提供所需的读取操作,并且其JSON输出可进行自定义,因此它们需要AEM WCM(Web内容管理)专业知识才能进行实施,因为它们必须在基于专用AEM模板的页面中托管。 并非每个SPA开发组织都能直接获取此类知识。
此时可以使用资产REST API。 它允许开发人员直接访问资产(例如,图像和内容片段),而无需先将资产嵌入到页面中,然后以序列化JSON格式交付其内容。
无法从Assets REST API自定义JSON输出。
资产REST API还允许开发人员通过创建新资产、更新或删除现有资产、内容片段和文件夹来修改内容。
资产REST API:
在最新Adobe Experience Manager as a Cloud Service版本的每次现成安装中,都提供Assets REST API。
资产REST API提供 REST对AEM实例中存储的资产的样式访问。
它使用 /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
访问:
/api/assets
不 需要使用 .model
选择器。/content/path/to/page
does 要求使用 .model
选择器。HTTP方法确定要执行的操作:
请求正文和/或URL参数可用于配置其中的一些操作;例如,定义文件夹或资产应由 POST 请求。
支持的请求的确切格式在 API参考 文档。
所有请求都是原子的。
这表示后续(write
)请求不能合并为单个实体可能成功或失败的单个事务。
方面 | 资产REST API |
AEM组件 (使用Sling模型的组件) |
支持的用例 | 一般用途。 | 已针对单页应用程序(SPA)或任何其他(内容使用)上下文的使用情况进行了优化。 还可以包含布局信息。 |
支持的操作 | 创建、读取、更新、删除。 根据实体类型使用其他操作。 |
只读. |
访问 | 可以直接访问。 使用 示例路径如下所示: |
需要在AEM页面上通过AEM组件引用。 使用 示例路径如下所示: |
安全性 | 可以使用多个选项。 OAuth是提出的;可以与标准设置分开配置。 |
使用AEM标准设置。 |
建筑备注 | 写访问通常将寻址创作实例。 也可以将读取定向到发布实例。 |
由于此方法为只读方法,因此通常将用于发布实例。 |
输出 | 基于JSON的SIREN输出:冗长,但功能强大。 允许在内容中导航。 | 基于JSON的专有输出;可通过Sling模型进行配置。 导览内容结构很难实现(但不一定不可能)。 |
如果在没有特定身份验证要求的环境中使用AEM REST API,则需要正确配置Assets CORS筛选器。
有关更多信息,请参阅:
在具有特定身份验证要求的环境中,建议使用OAuth。
内容片段是一种特定类型的资产,请参阅 使用内容片段.
有关通过API提供的功能的更多信息,请参阅:
GETREST API支持通过URL参数进行分页(对于资产请求):
offset
— 要检索的第一个(子)实体的编号limit
— 返回的最大实体数响应将包含作为 properties
部分。 此 srn:paging
属性包含(子)实体总数( total
)、偏移和限制( offset
, limit
)。
分页通常应用于容器实体(即具有演绎版的文件夹或资产),因为它与所请求实体的子实体相关。
GET /api/assets.json?offset=2&limit=3
...
"properties": {
...
"srn:paging": {
"total": 7,
"offset": 2,
"limit": 3
}
...
}
...
文件夹用作资产和其他文件夹的容器。 它们反映了AEM内容存储库的结构。
资产REST API公开了对文件夹属性的访问权限;例如,其名称、标题等。 资产会作为文件夹和子文件夹的子实体显示。
根据子资产和文件夹的资产类型,子实体列表可能已包含定义相应子实体的完整属性集。 或者,对于此子实体列表中的实体,只能显示缩减的属性集。
如果请求资产,响应将返回其元数据;例如标题、名称和由相应资产架构定义的其他信息。
资产的二进制数据将作为类型的SIREN链接公开 content
.
资产可以有多个演绎版。 它们通常作为子实体显示,其中一个例外是缩略图呈现,以类型的链接显示 thumbnail
( rel="thumbnail"
)。
A 内容片段 是一种特殊类型的资产。 它们可用于访问结构化数据,例如文本、数字、日期等。
由于 标准 资产(例如图像或音频)中的“隐藏主体”和“显示主体”选项,则处理这些资产时会应用一些其他规则。
内容片段:
请勿公开任何二进制数据。
完全包含在JSON输出中(在 properties
属性)。
也被视为原子,即元素和变量作为片段属性的一部分公开,而作为链接或子实体公开。 这允许有效访问片段的有效负载。
当前,定义内容片段结构的模型不会通过HTTP API公开。 因此, 消费者 需要了解片段的模型(至少是一个最小值) — 尽管大多数信息都可以从负载中推断出来;数据类型等。 是定义的一部分。
要创建新的内容片段,必须提供模型的(内部存储库)路径。
关联的内容当前未公开。
用法可能因您使用的是AEM创作环境还是发布环境以及特定用例而异。
强烈建议将创建绑定到创作实例(目前,没有方法使用此API复制要发布的片段)。
可以同时从两者进行交付,因为AEM仅以JSON格式提供请求的内容。
从AEM创作实例进行存储和交付应足以在防火墙后部署媒体库应用程序。
对于实时Web交付,建议使用AEM发布实例。
AEM云实例上的调度程序配置可能会阻止访问 /api
.
有关更多详细信息,请参阅 API参考. 特别是, Adobe Experience Manager Assets API — 内容片段.
存在以下几个限制:
在相关情况下,可以看到以下状态代码:
200 (确定)
返回时间:
GET
PUT
201 (已创建)
返回时间:
POST
404 (未找到)
返回时间:
500 (内部服务器错误)
返回以下错误:
下面列出了返回此错误状态时的常见情况,以及生成的错误消息(等宽):
父文件夹不存在(通过创建内容片段时) POST
)
未提供内容片段模型(缺少cq:model)、无法读取(由于路径无效或权限问题)或没有有效的片段模型:
No content fragment model specified
Cannot create a resource of given model '/foo/bar/qux'
无法创建内容片段(可能是权限问题):
Could not create content fragment
无法更新标题和描述:
Could not set value on content fragment
无法设置元数据:
Could not set metadata on content fragment
找不到或无法更新内容元素
Could not update content element
Could not update fragment data of element
详细的错误消息通常以下列方式返回:
{
"class": "core/response",
"properties": {
"path": "/api/assets/foo/bar/qux",
"location": "/api/assets/foo/bar/qux.json",
"parentLocation": "/api/assets/foo/bar.json",
"status.code": 500,
"status.message": "...{error message}.."
}
}
有关详细的API参考,请参阅此处:
有关更多信息,请参阅: