Spring使用HATEOAS约束

这里先复述一下Richardson提出的REST成熟度模型,固然详细的介绍能够看我参考的连接html

  • 第一个层次(Level 0)的 Web 服务只是使用 HTTP 做为传输方式,实际上只是远程方法调用(RPC)的一种具体形式。SOAP 和 XML-RPC 都属于此类。
  • 第二个层次(Level 1)的 Web 服务引入了资源的概念,每一个资源有对应的标识符和表达。
  • 第三个层次(Level 2)的 Web 服务使用不一样的 HTTP 方法来进行不一样的操做,而且使用 HTTP 状态码来表示不一样的结果。
  • 第四个层次(Level 3)的 Web 服务使用 HATEOAS。在资源的表达中包含了连接信息。客户端能够根据连接来发现能够执行的动做。

这里取一张图,来自richardsonMaturityModelgit

HATEOAS(The Hypermedia As The Engine Of Application Statue)是REST架构的主要约束。“hepermedia”表示任何包含指向图片、电影、文字等资源的连接,Web是超媒体的经典例子。HATEOAS背后的思想其实很是简单,就是响应中包含指向其它资源的连接。客户端能够利用这些连接和服务器交互。github

而后咱们写个demo实践一下,是怎么样一个效果,先添加须要的依赖包:
spring

这里看到咱们主要添加了spring-boot-starter-hateoas来支持hateoas约束api

而后咱们先定义一个交互的Dto,这个须要继承org.springframework.hateoas.ResourceSupport服务器

接下来咱们就能够实现咱们的rest api接口啦架构

这时候咱们能够在swagger页面使用一下spring-boot

能够看到返回的数据中带有了links信息,客户端能够根据这些信息作相应的处理,可是总感受一切没有想的那么容易,客户端并不定会买帐。ui

之类Link类其实没有那么多信息,包含 rel 和 href 两个属性。属性 rel 表示的是连接所表示的关系(relationship),href 表示的是连接指向的资源标识符,通常是 URI。.net

附:

swagger默认访问页面

boot工程格式:http://localhost:4500/swagger-ui.html

非boot工程:http://10.166.10.169:8085/xxx/swagger-ui.html

参考:

https://my.oschina.net/crooner/blog/644825

https://blog.csdn.net/tiaya/article/details/78408098

https://martinfowler.com/articles/richardsonMaturityModel.html

https://github.com/PacktPublishing/Mastering-Spring-5.0

相关文章
相关标签/搜索