API优先的Drupal:8.6版本有哪些新功能?- Wim Leers

作者:API传播员 · 2025-11-29 · 阅读时间:4分钟

Drupal 8 的 REST API 在 8.5 版本中实现了重要的成熟升级,而在 8.6 版本中,这一功能得到了进一步的优化和完善。本文将为您详细介绍 Drupal 8.6 版本中 REST API 的新功能和改进,希望能为您的开发工作带来帮助。


8.6 版本中的主要改进

安全文件上传的原生支持

在之前的版本中,开发者需要通过复杂的自定义 REST 资源插件或使用 base64 编码等方式来实现文件上传,这不仅繁琐而且容易出错。而在 Drupal 8.6 中,REST API 原生支持任何大小的安全文件上传,极大地简化了这一过程。

以下是一个文件上传的示例:

POST /file/upload/node/article/field_hero_image?_format=json HTTP/1.1
Content-Type: application/octet-stream
Content-Disposition: file; filename="filename.jpg"

[...二进制文件数据...]

在成功上传后,您可以使用返回的文件 ID 创建新的节点:

POST /node?_format=json HTTP/1.1
Content-Type: application/json

{
  "type": [{"value": "article"}],
  "title": [{"value": "Dramallama"}],
  "field_hero_image": [{"target_id": 345345, "description": "有史以来最迷人的图像!"}]
}

“Term”实体的“parent”字段改进

在 8.6 版本中,“parent”字段现在被标准化为实体引用字段。这意味着开发者可以更方便地管理分类术语的层级关系。例如:

"parent": [{
  "target_id": 2,
  "target_type": "taxonomy_term",
  "target_uuid": "371d9486-1be8-4893-ab20-52cf5ae38e60",
  "url": "https://example.com/taxonomy/term/2"
}]

修复 alt 属性丢失问题

在之前的版本中,image 字段的 alt 属性在非规范化和保存后会丢失,这对 SEO 和无障碍访问造成了不利影响。8.6 版本修复了这一问题,确保 alt 属性能够正确保存。例如:

"field_image": [{
  "target_id": 2,
  "target_type": "file",
  "target_uuid": "be13c53e-7f95-4add-941a-fd3ef81de979",
  "alt": "美丽的骆驼!"
}]

修复后,该属性在保存和标准化后将保持不变。

更清晰的权限错误信息

在之前的版本中,当尝试修改没有权限的字段时,系统仅返回一个 403 错误,这让开发者难以理解问题的根源。而在 8.6 版本中,错误信息变得更加直观。例如:

旧版错误信息:

{"message": "更新'sticky'字段时拒绝访问。"}

新版错误信息:

{"message": "更新字段'sticky'时拒绝访问。需要'administrationnodes'权限。"}

这项改进大大提升了开发者的调试效率。

更友好的错误响应

当请求的格式不被支持时,8.6 版本的错误响应变得更加友好。例如,以下请求:

GET /entity/block/bartik_branding?_format=hal_json

返回的响应将包括支持的格式列表:

{
  "message": "找不到指定格式hal_json的路由。支持的格式:json、xml。",
  "_links": {
    "alternate": [
      {
        "href": "http://example.com/entity/block/bartik_branding?_format=json",
        "type": "application/json"
      },
      {
        "href": "http://example.com/entity/block/bartik_branding?_format=xml",
        "type": "text/xml"
      }
    ]
  }
}

这为开发者提供了更明确的指导。

REST 测试覆盖的优化

在 8.6 版本中,提供实体类型的模块现在负责其自身的 REST 测试。这种改进确保了每个模块都优先支持 HTTP API,从而进一步推动了 Drupal 的 API-First 战略。


总结

Drupal 8.6 的 REST API 改进显著提升了开发者的使用体验,无论是文件上传、错误信息提示,还是测试覆盖,都变得更加高效和直观。这些改进不仅让开发者的工作更加轻松,也为 Drupal 成为真正的 API-First 平台奠定了坚实的基础。

原文链接: https://wimleers.com/blog/api-first-drupal-8.6