Content
最后更新:2026年7月3日
CDA(Content Delivery API)是面向公开访问者交付已发布资源的只读 API。本页介绍如何查询已发布的 Content,即按照 Content Type 这一框架创建出来的每一条实际数据。CDA 交付的是发布时刻的快照,因此在内容工作室中尚未发布的草稿不会出现在这里。
CDA 只有查询(GET)端点,创建、修改和发布 Content 的操作由 CMA Content 负责。认证以及发布交付模型(发布快照、revision、只显示已发布内容、作者信息是否暴露取决于 publishWithAuthor)等 CDA 通用行为,请参阅 CDA 概览。如何用 locale 指定接收的语言,将在下文 locale 与 fields 中说明。
资源结构
下面是演示 Space 中一条已发布 Content("스테인리스 텀블러 500ml" 商品)经 CDA 以 locale=ko-KR 进行单条查询所交付的形态。它在 sys(系统属性)之外,还带有 fields,其中存放着该 Content 所遵循的 Content Type 的字段值。
{
"sys": {
"id": "3trmXRM3RqbgSnifyg7OGhwhlqvAvq",
"type": "Content",
"space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
"contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA", "type": "Refer", "targetType": "ContentType" } },
"createdAt": "2026-06-15T15:16:12.151Z",
"updatedAt": "2026-06-16T14:31:20.073Z",
"revision": 3
},
"fields": {
"price": 18000,
"description": "이중 진공 단열로 보온·보냉이 오래갑니다. 500ml 대용량.",
"photo": null,
"productName": "스테인리스 텀블러 500ml"
}
}主要键:
sys.id:Content 的唯一标识符。会填入单条查询路径中的{contentId}。sys.contentType:指向该 Content 所遵循的 Content Type(框架)的Refer。sys.id即该 Content Type 的标识符,至于它具有哪些字段,可在 CDA Content Type 中读取。sys.revision:公开时刻的版本。CDA 不携带管理用的version,因此指向发布版本的值只有revision这一个。fields:以 Content Type 各字段的apiName为键的对象。值为所请求locale的单个值(而非 locale 映射)。上例中的photo因为没有关联的 Media,所以为null。
系统属性 (sys)
已发布 Content 的 sys 只携带用于发布快照的属性。space、contentType、createdBy、updatedBy 以 Refer 形态({ "sys": { "id", "type": "Refer", "targetType" } })出现。
| 属性 | 类型 | 说明 |
|---|---|---|
id | string | 资源唯一标识符。 |
type | string | 资源种类。Content 始终为 "Content"。 |
space | Refer<Space> | 该 Content 所属的 Space。 |
contentType | Refer<ContentType> | 该 Content 所遵循的 Content Type(框架)。 |
createdAt | string (date-time) | 创建时间。 |
updatedAt | string (date-time) | 最后修改时间。 |
revision | integer | 公开时刻的版本。每次发布时,该时刻的版本都会记入此处。 |
createdBy | Refer<User> | 创建该资源的用户。仅当该 Content 所遵循的 Content Type 的 publishWithAuthor 开启时才包含。 |
updatedBy | Refer<User> | 最后修改该资源的用户。仅当 publishWithAuthor 开启时才包含。 |
由于是发布快照,CMA 的 sys 中所含的 version、status、publish、archive 不会被携带。指向发布版本的值只有 revision 这一个。
locale 与 fields
通过 locale 查询参数指定以哪种语言接收。它有三种行为方式。
- 像
locale=ko-KR这样给出代码时,会将fields返回为该 locale 的单个值。与 CMA 像fields.productName.ko-KR那样返回包含所有 locale 各自值的映射不同,CDA 会挑选所请求的那一个 locale 的值,直接放入fields.productName。若没有值且 Fallback 也未能到达,则该字段为null(上文 资源结构 中photo为null,是因为没有关联的 Media)。 - 省略
locale时,会以 Space 的默认 Locale 按相同方式返回。 - 给出
locale=*时,不挑选单一语言,而是像 CMA 那样原样返回包含所有 locale 各自值的映射(fields.productName.ko-KR)。
通过代码或省略来接收单一语言时,响应中会带上告知实际所用 locale 的 x-weegloo-locale 头(locale=* 时不会带上)。locale 取值的挑选以及 Fallback 规则,将在 多语言(概念) 中说明。
API
以下四个端点的基准 URL 为 https://cda.weegloo.com/v1,并需要在 Authorization 头中提供用于 CDA 认证的 Bearer 令牌。四个端点都接受 locale 查询参数(参见上文 locale 与 fields)。前两个端点以整个 Space 的已发布 Content 为对象,后两个端点仅以属于特定 Content Type 的 Content 为对象。
用 fields.* 对前两个端点(整个 Space 范围的已发布 Content 列表)进行过滤或排序时,必须同时以 sys.contentType.sys.id={contentTypeId} 指定 Content Type。contentType={contentTypeId} 这种形式无法替代。后两个端点已在路径中明示了 Content Type,因此无需另行指定。
相关文档
- CDA Content Type:该 Content 所遵循的发布框架。
- CDA Media:Content 所引用的已发布文件资产。
- CMA Content:创建和修改 Content 的管理 API。
- 多语言(概念):locale 与 fallback 的行为。
