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



我从未真正听说过HAL,直到我开始着手一个新的项目,并正在使用它。据我所知,这基本上是一种很容易遵循链接来遍历一个安静的API结构的方法。

因此,如果我正确理解这一点,这两个工具都可以更容易地遍历API的文档,以查看与所述API通信的所有不同方式。从本质上讲,这两种工具都只是用于文档目的的工具?

REST API必须是超文本驱动的。它不仅用于文档编制,而且用于驱动与API的所有交互。如果您不是通过链接驱动交互,而客户端是从文档中的模板构建URI,那么它就不是RESTful。Django REST框架的作者自己也认识到这个名称是不够的。

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

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

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

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

Django REST框架支持HTML输出中的超链接,但是——AFAIK——它不支持其他格式的超链接。如果你愿意,你可以使用HAL-JSON,但你必须实现对它的支持

最新更新