logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动
04/09/2025, by Ivan

JSON:API heeft veel concepten in de specificatie, die hier niet allemaal gedocumenteerd zijn. Gebruikers van de module hoeven echter niet alle concepten van de specificatie volledig te begrijpen om productief te kunnen werken met deze module.

04/09/2025, by Ivan

集合(Collections) 是资源的列表。在解耦站点中,你会用它们在客户端创建诸如“新内容(New Content)”列表或“我的内容(My content)”版块之类的东西。

然而,当你对诸如 /jsonapi/node/article 这样的集合端点发起未加筛选的请求时,你只会得到你被允许查看的所有文章。

没有筛选器(filters),你就无法只获取你的文章,或只获取关于羊驼的文章。

本指南将教你如何像专业人士一样构建筛选器。

快速开始

最简单、最常见的筛选器是键值筛选(key-value filter):

04/09/2025, by Ivan

简而言之:使用类似 ?include=field_comments.uid 的查询字符串,可以一次性包含 field_comments 引用的所有实体,以及这些实体上 uid 引用的所有实体!


JSON:API 通过允许你指定关系路径并将其包含在响应文档中,帮助你减少 HTTP 请求。如何实现呢?

获取单个资源

获取文章

假设你有一篇带有两条评论的文章,并且这两条评论的作者是同一个人。如果不使用 includes,要获取这些数据,你需要先请求 GET /jsonapi/node/article/some-random-uuid

04/09/2025, by Ivan

分页可能是一个看似简单却复杂的话题。很容易陷入陷阱而没有遵循最佳实践。本页将帮助你“正确”地实现分页。换句话说,如果你阅读并理解本页的内容,我们认为你的客户端会更加健壮、具有前瞻性,并且让你未来的开发更轻松。

如果你只记住本指南中的一件事,那就是:不要自己构造分页 URL

JSON:API 模块返回的每个分页响应中,已经包含了指向集合下一页的链接,你只需使用该链接即可。

在本文开头,我们将介绍 API 的一些重要特性,以及如何“正确”实现分页。在文末,你会找到一些常见问题与陷阱的解答

如何实现?

JSON:API 模块返回的每个分页响应中都内置了分页链接。下面是一个小示例:

04/09/2025, by Ivan

JSON:API 使得在单个请求中检索多个资源成为可能,这些路由称为“集合(collection)”路由。可以通过向基础资源路由发送 GET 请求来获取资源集合,例如 GET /jsonapi/node/article,并且包含 UUID。默认情况下,这将包含指定类型的所有资源。

过滤和排序在所有标准资源上默认可用。

请求头

以下请求头在所有 GET 请求中都是必须的,以确保 JSON:API 请求和响应的正确性。

  • Accept: application/vnd.api+json
  • Content-Type: application/vnd.api+json

以下请求头在示例中需要使用:

04/09/2025, by Ivan

本节包含每种请求类型的示例和信息:GET、POST、PATCH 和 DELETE

关于示例

所有示例都是可运行的示例,你可以在浏览器或 JSON 客户端(例如:Postman)中尝试。你需要一个标准的 Drupal 安装、一系列文章(Article 节点)以及启用 JSON:API 模块。

http://example.com/jsonapi/node/article/{{article_uuid}}

所有请求都使用 '/jsonapi' 路径前缀,这是 JSON:API 模块的默认值。在各种示例中,占位符使用双花括号语法表示,例如 {{...}}。请将它们替换为你环境中适用的数据。

要允许 POST、PATCH 和 DELETE 操作,请访问
/admin/config/services/jsonapi
并勾选 “接受所有 JSON:API 创建、读取、更新和删除操作” 选项。

04/09/2025, by Ivan

此页面展示了 JSON:API 模块 的各种 GET 请求示例。

在以下所有示例中,请求头不是必须的。如果匿名用户可以访问内容实体,则不需要认证。对于菜单等配置实体,请参考最后部分。

请注意,在所有情况下,当需要 id 时,它始终是实体的 uuid,而不是实体 id。

Accept 请求头

请确保始终发送以下请求头:Accept: application/vnd.api+json

curl \
  --header 'Accept: application/vnd.api+json' \
  .... 

基本 GET 示例

URL: http://example.com/jsonapi/node/article/{{article_uuid}}