Drupal 10 JSON API 使用指南:标准化数据交换与高效开发

作者:API传播员 · 2025-10-15 · 阅读时间:5分钟

JSON 构建 API 的标准化规范。它通过提供清晰一致的数据交换结构,简化了 API 的创建和使用过程。在 Drupal 中,JSON API 是访问数据结构(如实体类型、捆绑包、字段等)的核心模块。它支持构建解耦应用程序或将 Drupal 与其他系统集成的能力。


启用 JSON API

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


了解 JSON API

在 JSON API 中,每个资源都必须具有全局唯一的 type 属性。在 Drupal 的 JSON API 实现中,该属性从实体类型的机器名称和捆绑包的机器名称派生。例如:

  • 文章类型的资源为 node--article
  • 页面类型的资源为 node--page
  • 用户类型的资源为 user--user

JSON API URL 结构示例

以下是 JSON API 支持的 HTTP 方法及其 URL 结构示例:

  • GET | POST: /jsonapi/node/article
  • PATCH | DELETE: /jsonapi/node/article/{uuid}

GET 请求

GET 请求用于检索数据,可以是资源集合或单个资源。所有 GET 请求需包含以下请求头:

Accept: application/vnd.api+json

响应

  • HTTP 200 响应:返回的响应体包含单个文章节点的 JSON API 对象,包括属性、关系和链接。

POST 请求

要发送 POST 请求,请确保包含以下请求头:

Accept: application/vnd.api+json

此外,您可以通过 /session/token 获取访问令牌。

基本 POST 请求示例

URL: http://example.com/jsonapi/node/article

响应

  • HTTP 201(已创建) 响应:返回的响应体包含所创建实体的 JSON API 对象。

DELETE 请求

所有 DELETE 请求需包含以下请求头:

Content-Type: application/vnd.api+json

基本 DELETE 请求示例

响应

  • HTTP 204(无内容) 响应:响应体为空。

PATCH 请求

所有 PATCH 请求需包含以下请求头:

Accept: application/vnd.api+json
Authorization: Basic

响应

  • HTTP 200 响应:返回的响应体包含更新后的实体的 JSON API 对象。

JSON API 的特性

  1. 自动序列化

    JSON API 自动处理数据的序列化。当从 Drupal 请求数据时,它会自动转换为符合 JSON API 的格式,从而减少开发者编写自定义序列化代码的需求。

  2. 分页和排序

    JSON API 开箱即用地支持分页和排序功能。这对于处理大型数据集尤为重要,能够帮助客户端高效检索数据。

  3. 关系支持

    JSON API 允许在单个请求中检索相关资源,从而减少获取关联数据所需的 API 调用次数。

  4. 过滤和查询

    通过 URL 中的查询参数,开发者可以对 Drupal 资源进行过滤和查询,仅请求所需的数据。


在 Drupal 10 中使用 JSON API 的好处

  1. 简化开发

    JSON API 提供了与 Drupal 数据交互的标准化方式,显著简化了 Web 应用程序的开发

  2. 提高效率

    自动序列化和关系支持降低了处理数据的复杂性,从而提升了开发效率

  3. 广泛兼容性

    JSON API 在多种编程语言和框架中得到广泛支持,使得 Drupal 能够轻松与其他技术集成。

  4. 可扩展性

    JSON API 的 RESTful 设计使得 Drupal 网站能够轻松扩展,以应对更多客户端和请求。


结论

JSON API 是一个功能强大的工具,能够以灵活且标准化的方式公开内容。它不仅简化了构建解耦应用程序和与其他服务集成的过程,还促进了 API 设计中的最佳实践。无论是开发者还是企业,使用 JSON API 都能显著提升开发效率和系统可扩展性。

原文链接: https://www.tothenew.com/blog/introduction-of-drupal-jsonapi/