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.idContent 的唯一标识符。会填入单条查询路径中的 {contentId}
  • sys.contentType:指向该 Content 所遵循的 Content Type(框架)的 Refersys.id 即该 Content Type 的标识符,至于它具有哪些字段,可在 CDA Content Type 中读取。
  • sys.revision:公开时刻的版本。CDA 不携带管理用的 version,因此指向发布版本的值只有 revision 这一个。
  • fields:以 Content Type 各字段的 apiName 为键的对象。值为所请求 locale 的单个值(而非 locale 映射)。上例中的 photo 因为没有关联的 Media,所以为 null

系统属性 (sys)

已发布 Contentsys 只携带用于发布快照的属性。spacecontentTypecreatedByupdatedByRefer 形态({ "sys": { "id", "type": "Refer", "targetType" } })出现。

属性类型说明
idstring资源唯一标识符。
typestring资源种类。Content 始终为 "Content"
spaceRefer<Space>Content 所属的 Space
contentTypeRefer<ContentType>Content 所遵循的 Content Type(框架)。
createdAtstring (date-time)创建时间。
updatedAtstring (date-time)最后修改时间。
revisioninteger公开时刻的版本。每次发布时,该时刻的版本都会记入此处。
createdByRefer<User>创建该资源的用户。仅当该 Content 所遵循的 Content TypepublishWithAuthor 开启时才包含。
updatedByRefer<User>最后修改该资源的用户。仅当 publishWithAuthor 开启时才包含。

由于是发布快照,CMA 的 sys 中所含的 versionstatuspublisharchive 不会被携带。指向发布版本的值只有 revision 这一个。

locale 与 fields

通过 locale 查询参数指定以哪种语言接收。它有三种行为方式。

  • locale=ko-KR 这样给出代码时,会将 fields 返回为该 locale 的单个值。与 CMA 像 fields.productName.ko-KR 那样返回包含所有 locale 各自值的映射不同,CDA 会挑选所请求的那一个 locale 的值,直接放入 fields.productName。若没有值且 Fallback 也未能到达,则该字段为 null(上文 资源结构photonull,是因为没有关联的 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 TypeContent 为对象。

fields.* 对前两个端点(整个 Space 范围的已发布 Content 列表)进行过滤或排序时,必须同时以 sys.contentType.sys.id={contentTypeId} 指定 Content TypecontentType={contentTypeId} 这种形式无法替代。后两个端点已在路径中明示了 Content Type,因此无需另行指定。