API优先的Drupal:8.6版本有哪些新功能?- Wim Leers
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 测试。这种改进确保了每个模块都优先支持 Drupal 的 API-First 战略。
总结
Drupal 8.6 的 REST API 改进显著提升了开发者的使用体验,无论是文件上传、错误信息提示,还是测试覆盖,都变得更加高效和直观。这些改进不仅让开发者的工作更加轻松,也为 Drupal 成为真正的 API-First 平台奠定了坚实的基础。
原文链接: https://wimleers.com/blog/api-first-drupal-8.6
最新文章
- 使用 Go 1.22 和 http.ServeMux 构建 REST API | 作者: Shiju Varghese
- 掌握API端到端测试:全面指南
- Tesults博客:API自动化测试指南
- 介绍全新的Rust REST API客户端库
- DeepSeek R1 × 飞书多维表格赋能教育领域
- 深入解析什么是API安全
- 使用 C++ 和 Win32 API 创建 GUI 窗口应用程序:从零构建 Windows 桌面界面
- 一个平台对接所有API:企业级API集成解决方案
- 台湾可以用支付宝吗?:支付与收款指南
- 深入解读 API Gateway:设计原则、实践与最佳架构
- 什么是 LangSmith
- 为API网关构建ChatGPT自定义插件 – API7.ai