RESTful API 设计中的 Hypermedia 驱动

阅读时长 4 分钟读完

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 相比,有以下好处:

  1. 可维护性更高

由于每个资源都被定义为一个独立的状态,所以很容易通过 API 更新和修改这些资源,而不会破坏整个系统。

  1. 可扩展性更高

Hypermedia 驱动的设计可以允许你添加新的资源表示形式、新的链接,同时不破坏现有的 API。

  1. 可重用性更高

由于 API 的相互依赖性较小,因此它们可以被用于不同的应用程序中,而不需要修改现有的代码。

  1. 可测试性更高

使用 Hypermedia 驱动的 API 可以帮助您在测试期间更好地组织和维护测试数据。

如何设计 Hypermedia 驱动的 RESTful API

Hypermedia 驱动的 RESTful API 应该遵循以下规则:

  1. API 响应应该包含有意义的链接和其他元数据,以标识相关资源的位置。

  2. API 在响应中应该包含适当的资源表示形式,以便客户端可以理解 API 的逻辑。

  3. API 响应应该包含一组可用于执行下一步操作的链接。这些链接应该是语义正确的,并且应该明确指示下一步要采取哪些措施。

  4. API 应该通过提供多种资源表示形式的支持,来支持客户端的不同需求。

  5. API 应该支持 HATEOAS(Hypermedia as the Engine of Application State)约束,以确保客户端可以自己从 API 中发现服务。

  6. 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

纠错
反馈