我不明白 Django-Rest-Framework 的内置超链接与 HAL 之间的区别

I don't understand the difference between Django-Rest-Framework's built-in Hyperlink's and vs. HAL

我从未真正听说过 HAL,直到我开始从事一个正在使用它的新项目。据我所知,它基本上是一种轻松跟随链接遍历 restful API 结构的方法。

因此,如果我理解正确的话,这两种工具都可以更轻松地遍历 API 的文档,以查看与所述 API 进行通信的所有不同方式。基本上这两个都是仅用于文档目的的工具?

REST APIs 必须是超文本驱动的。它不仅用于文档目的,还用于驱动与 API 的所有交互。如果您不是通过链接驱动交互,而客户是从文档中的模板构建 URI,则不是 RESTful。 Django-REST-Framework 的作者自己也承认这个名字不合适。

http://www.django-rest-framework.org/topics/rest-hypermedia-hateoas/

您应该阅读该文档中提供的链接,特别是这个链接:

http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

考虑到这一点,您的 REST API 必须使用标准化链接的数据格式,以便客户端知道如何解析它们。这将限制大多数 API 使用 HTML 或 XML,但由于 JSON 是一种非常流行的数据交换格式,因此在设计添加超媒体的约定方面做出了一些努力- 了解任何格式,例如 HAL。

Django-REST-Framework 支持 HTML 输出中的超链接,但是——据我所知——它不支持其他格式的超链接。如果需要,您可以使用 HAL-JSON,但您必须实现对它的支持。