
此页面展示了 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}}


此页面展示了 JSON:API 模块 的各种 POST 请求示例。
POST 请求用于创建新资源。如果需要修改资源,请使用 PATCH。
JSON:API 规范(因此 JSON:API 模块)仅支持每个 POST 请求创建一个资源。对于 Drupal,这意味着无法(仅使用该模块)在一个请求中创建多个实体。如果你想在创建父实体的同时创建被引用的实体,就需要这种功能。虽然 JSON:API 不支持此行为,但像 Subrequests 这样的模块可以帮助实现。
启用创建操作
访问 /admin/config/services/jsonapi
并勾选 “接受所有 JSON:API 创建、读取、更新和删除操作” 选项。


此页面展示了 JSON:API 模块 的 PATCH 请求示例。
启用更新操作
访问 /admin/config/services/jsonapi
并勾选 “接受所有 JSON:API 创建、读取、更新和删除操作” 选项。


本页展示了 JSON:API 模块 的 DELETE 请求示例。
启用删除操作
访问 /admin/config/services/jsonapi
并勾选“Accept all JSON:API create, read, update, and delete operations.”(接受所有 JSON:API 的创建、读取、更新和删除操作)选项。


有些站点可能不希望暴露某些 JSON:API 资源类型或字段,或希望重命名字段以提供更简洁的接口。
为允许进行这些更改,JSON:API 会以事件名 ResourceTypeBuildEvents::BUILD
派发一个 ResourceTypeBuildEvent
事件对象。请参阅订阅与派发事件以了解如何使用这些事件。
事件订阅器可以调用以下方法:


要点速览(TL;DR)
如果你需要暴露非实体(non-entity)数据,请选择 REST。其他情况下,选择 JSON:API。
更细化一些的说明:


JSON:API 完全基于实体(entity)。也就是说,它无法处理业务规则,或执行那些无法被视为 “CRUD” 的操作。诸如注册新账号、登录用户、请求新密码等业务逻辑不属于 JSON:API 的范畴。这些能力中有许多已经由 Drupal 核心提供。
下面给出一份常见需求与解决方案的非完整清单。
相关路径如下:
- /session/token
- /user/register
- /user/login
- /user/login_status
- /user/logout
获取会话令牌(session token)
获取令牌
curl \
--request GET http://drupal.d8/session/token
响应主体会以纯文本(非 JSON)的形式返回一个令牌。


资源与字段的重命名与禁用现已成为核心的一部分。
当你需要更改资源属性(例如 API 路径、资源计数或 include 的默认值),或者希望通过界面禁用字段或资源时,请使用JSON:API 扩展。
启用该模块后,你可以访问/admin/config/services/jsonapi,查看由 JSON:API 暴露的所有配置与内容列表。
文章来自 Drupal 文档。


JSON:API 模块旨在将通过 Drupal 的 Entity API、Field API 和 Typed Data API 定义的数据模型,按符合 JSON:API 规范 的方式通过 API 暴露出来,以便与由 Drupal 管理的数据(实体)进行交互。
在此过程中,它会遵循 Drupal 针对这些数据的所有安全措施:
