RESTful API 很流行,因为它是一种简单的架构模式,能够同时提供可伸缩性、可维护性、可重用性和安全性。但是,RESTful API 设计不仅仅是创建一个 URL,发送一个 HTTP 请求并接收一个 HTTP 响应。实际上,RESTful API 设计是一门学问,需要考虑多个方面。其中之一是 Hypermedia 驱动的设计。
什么是 Hypermedia 驱动
Hypermedia 驱动是与 RESTful API 设计相关的一个概念。它是指 API 的响应中包含了控制和数据。在 RESTful API 中,控制和数据是分离的。数据由资源表示形式表示,控制由链接表示。而 Hypermedia 驱动的设计则是包含了控制和数据,它们一起构成一个有意义的信息。
Hypermedia 驱动的设计允许客户端通过阅读响应中的链接和资源表示,发现和交互服务中的资源。这个功能又被称为“发现服务”(Discoverability)。发现服务是 RESTful API 唯一一种与传统网站相同的功能。通过发现服务,客户端可以自己构建出服务点提供的 CRUD(Create,Read,Update 和 Delete)操作。
Hypermedia 取决于语义准确的、自解释的链接(比如 API 的链接,uri),而不局限于 Web 的 URI 形式或超链接风格。这样一来,可以通过简单的链接和状态,来让客户端进行打破改动和语义的基本操作。
Hypermedia 驱动的好处
使用 Hypermedia 驱动的 API 和普通的 API 相比,有以下好处:
- 可维护性更高
由于每个资源都被定义为一个独立的状态,所以很容易通过 API 更新和修改这些资源,而不会破坏整个系统。
- 可扩展性更高
Hypermedia 驱动的设计可以允许你添加新的资源表示形式、新的链接,同时不破坏现有的 API。
- 可重用性更高
由于 API 的相互依赖性较小,因此它们可以被用于不同的应用程序中,而不需要修改现有的代码。
- 可测试性更高
使用 Hypermedia 驱动的 API 可以帮助您在测试期间更好地组织和维护测试数据。
如何设计 Hypermedia 驱动的 RESTful API
Hypermedia 驱动的 RESTful API 应该遵循以下规则:
API 响应应该包含有意义的链接和其他元数据,以标识相关资源的位置。
API 在响应中应该包含适当的资源表示形式,以便客户端可以理解 API 的逻辑。
API 响应应该包含一组可用于执行下一步操作的链接。这些链接应该是语义正确的,并且应该明确指示下一步要采取哪些措施。
API 应该通过提供多种资源表示形式的支持,来支持客户端的不同需求。
API 应该支持 HATEOAS(Hypermedia as the Engine of Application State)约束,以确保客户端可以自己从 API 中发现服务。
API 应该对错误响应进行恰当的处理和标识。
API 设计示例代码
下面是一个 Hypermedia 驱动的 RESTful API 的示例:
-- -------------------- ---- ------- - -------- - - ------ ------- ------- --------------------- -- - ------ ------- ------- -------------------------- -- - ------ --------- ------- ---------------------------------- - -- ------- - - ----- -- ------- ----- ------ -- - ----- -- ------- ----- ---- - - -
在这个例子中,links
数组包含了三个链接,self
表示当前页面,next
表示下一页,search
表示可以搜索数据的链接。data
数组包含了两个数据对象。
总结
Hypermedia 驱动的 RESTful API 表示 API 网络设计的未来。它是一个非常强大的设计工具,能帮助你创建高度可维护、高度扩展和易于测试的 API。设计和实现一个良好的 Hypermedia 驱动的 RESTful API 需要投入时间和精力,但是它将会改变你的整个 API 设计理念。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65013b2095b1f8cacdf03535