REST、超媒体和 HATEOAS

你一直在使用“REST”这个词。我认为它并不是你认为的意思。

— Mike Amundsen,REST fest 2012 主题演讲

首先,免责声明。“Django REST 框架”这个名称是在 2011 年初确定的,选择这个名称只是为了确保开发人员能轻松找到该项目。在整个文档中,我们尝试使用“Web API”这个更简单、技术上更正确的术语。

如果你认真考虑设计超媒体 API,你应该查阅本文件之外的资源,以帮助了解你的设计选择。

以下内容属于“必读书目”类别。

如需更全面的背景,请查看 Klabnik 的超媒体 API 阅读清单

使用 REST 框架构建超媒体 API

REST 框架是一个不可知 Web API 工具包。它确实有助于指导你构建连接良好的 API,并使设计合适的媒体类型变得容易,但它并不会严格强制任何特定的设计风格。

REST 框架提供的内容。

不言而喻,REST 框架使构建超媒体 API 成为可能。它提供的可浏览 API 是基于 HTML 构建的 - Web 的超媒体语言。

REST 框架还包括 序列化解析器/渲染器 组件,这些组件让构建合适的媒体类型、超链接关系(用于构建连接良好的系统)和对 内容协商 的强大支持变得十分容易。

REST 框架不提供的内容。

REST 框架不提供机器可读的超媒体格式,例如 HALCollection+JSONJSON API 或 HTML 微格式(默认情况下),也不提供自动神奇地创建完全 HATEOAS 风格 API 的功能,其中包括基于超媒体的表单描述和语义标记的超链接。这样做会涉及对 API 设计做出武断的选择,而这些选择实际上应该在框架的范围之外。