RESTful API 是一种常用的 Web API 设计理念,在前端开发中有很高的使用率。RESTful API 的核心原则是资源的表现层状态转换(Representational State Transfer,简称 REST),即通过不同的 HTTP 方法和状态码来表示资源在客户端和服务器端之间的状态转换,从而实现客户端与服务器端的通信。而 Hypermedia 是 RESTful API 中的一个重要概念,它可以为客户端提供资源间的关联关系,让客户端能够自主地浏览不同的资源,并根据不同的状态转换来执行不同的操作。
什么是 Hypermedia
Hypermedia 是指将超媒体应用到传统的机器可读媒体中,使得客户端能够识别和使用媒体资源之间的关联关系。这种关联关系可以表现为实体与实体之间的关系,也可以表现为实体与状态之间的关系。在 RESTful API 的设计中,Hypermedia 可以通过一些协议和格式来实现,比如 HTML、JSON API、HAL、Siren 等等。
Hypermedia 在 RESTful API 中的应用
在 RESTful API 的设计中,Hypermedia 通常用于表示资源之间的关联关系。这种关联关系可以是子资源、父资源、同级资源等等。通过关联关系,客户端就能够获取到与当前资源相关的其他资源,从而实现资源的导航和发现。此外,Hypermedia 还可以用于在资源状态发生变化时,通知客户端执行不同的操作。比如,当一个订单被确认后,服务器端可以返回一个包含支付链接的响应,让客户端能够通过这个链接进行支付操作。
Hypermedia 的实现方式有很多种,下面我们以 HAL 格式为例来介绍其应用。HAL(Hypertext Application Language)是一种 RESTful API 的媒体类型,它通过 JSON 表示资源之间的链接关系。HAL 中的每一个资源都包含了一个 _links 属性和一个 _embedded 属性。_links 属性表示当前资源的链接关系,例如:子资源、父资源、相关资源等等。_embedded 属性表示当前资源的嵌入关系,例如:一个订单资源可以嵌入多个商品资源。
下面是一个使用 HAL 格式表示订单和商品资源之间关联关系的示例:
-- -------------------- ---- ------- - --------- - ------- -------- --------------- ----------- -------- ------------------ -------- -------- -------------------- -- -------- ------ ----------- ------ ------------ - -------- - - --------- - ------- -------- ----------------------- ---------- -------- -------------- -- ------- ------ ----------- -- -------- ----- -- - --------- - ------- -------- ----------------------- ---------- -------- -------------- -- ------- ------ ----------- -- -------- ----- - - - -
在上述示例中,订单资源包含了 _links 属性和 _embedded 属性,而商品资源仅包含了 _links 属性。客户端可以通过访问订单资源的 _links 属性中的 items 属性来获取商品资源的链接,从而得到商品资源的信息。
总结
Hypermedia 是 RESTful API 在实现资源间关系和状态转换时的一个重要概念。在前端开发中,我们应该深入理解 Hypermedia 的应用,以便在设计 RESTful API 接口时能够更好地实现客户端与服务器端的通信。常见的 Hypermedia 实现方式有 HTML、JSON API、HAL、Siren 等等,开发者可以选择适合自己的 Hypermedia 方式来实现资源之间的关系和状态转换。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6488741748841e98946ed6a2