logo

Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll
04/09/2025, by Ivan

JSON:API 模块将实体修订版本公开为资源版本,其方式受 RFC5829:用于 Web 资源之间简单版本导航的链接关系类型 启发。

当前限制:

修订支持并不是 JSON:API 规范的官方部分。然而,正在开发一些 “profiles”(也不是规范的官方部分,但已被纳入 JSON:API v1.1),以标准化 JSON:API 模块开发的任何自定义行为(所有这些仍符合规范)。

这样做的目的是使 JSON:API 模块最大程度兼容其他系统,并尽量减少开发者在使用 JSON:API 实现时需要了解的 “Drupalisms”。

在 JSON:API 模块中,“版本” 是指以前或当前为默认修订的任何修订。并非所有修订都被视为 “版本”。未标记为 “默认” 修订的修订被视为 “工作副本”,因为它们通常不会公开,并且是应用大多数新工作的修订。

当启用内容审核(Content Moderation)模块时,最新的默认修订可能不是最新的修订。

请求资源版本是通过 URL 查询参数完成的。其形式如下:

            version-identifier
                  __|__
                 /     \
?resourceVersion=foo:bar
                 \_/ \_/
                  |   |
  version-negotiator  |
              version-argument

版本标识符是一个包含足够信息以加载特定修订的字符串。版本协商器部分命名用于加载修订的协商机制。目前,它可以是 idrelid 协商器接受修订 ID 作为版本参数。rel 协商器接受的版本参数可以是字符串 latest-version 或字符串 working-copy

未来,可能会开发其他协商器。例如,基于时间戳或工作区的协商器。

为了说明如何请求特定的实体修订,假设一个节点有一个 “已发布” 修订和一个后续的 “草稿” 修订。

使用 JSON:API,可以通过请求 /jsonapi/node/page/{{uuid}}?resourceVersion=rel:latest-version 来请求 “已发布” 节点。

要预览仍在进行中的实体(即 “草稿” 修订),可以请求 /jsonapi/node/page/{{uuid}}?resourceVersion=rel:working-copy

要请求特定的修订 ID,可以请求 /jsonapi/node/page/{{uuid}}?resourceVersion=id:{{revision_id}}

目前还不能请求修订集合。此功能仍在开发中,参见 #3009588: 提供一个集合资源,以便获取版本历史(`version-history`、`predecessor-version` 和 `successor-version` 链接关系)

文章来源:Drupal 文档