学习Spring-HATEOAS有感

这几天在看Spirng-in-action-5,其中讲Rest部分,着重提到了HATEOAS,描述了spring如何漂亮地写出HATEOAS风格的API,感觉很神奇,这个词之前是有看到,但是都是作为Restful的地方的补充内容,并不是重点,一向就被忽略掉了.既然书里面花了大量篇幅来讲,一定有什么不同寻常之处吧.

查了下资料,发现中文介绍的不多.比较详细的是IBM的一篇

使用 Spring HATEOAS 开发 REST 服务

内容其实和书里面差不多,看上去很强大,用一组规范把返回的数据格式固定了下来.但是实际中并没见过大规模使用,想了想,可能有几个问题:

  1. 后端增加了复杂度,有一定门槛(Resource,Assembler还是挺麻烦的).
  2. 一厢情愿的增加内嵌资源的描述,前端工程并不买账.无论vue,angular,react都各自有自己的一套路由机制,而不是读取资源描述进行加载.目前只有traverson支持,而traverson同样有学习成本,费心费力去支持这个,并没有简化开发,费心费力去实践,只是为了符合规范的话,程序员学习的热情一定大打折扣.
  3. spring-data-rest好像可以简化生成,没有前端的支持,标准再好有什么意义?

HATEOAS的主要亮点在返回结果中提供链接,连向其他相关对象(rel),使得用户不查文档,也知道下一步应该做什么。它如果是做一个公共的接口(比如GitHub),确实有一定意义,当然成本也比较大,如果是做自己的系统,单纯的前后端交互接口,那就没有特别的需要.

总之,虽然Restful这两年已经成为了前后端分离框架的API标准,HATEOAS是REST成熟度最高的3级模型,但实际却没有用起来.举个不恰当的例子,就像Hibernate,再高大上的ORM,国人就是不用,都用灵活度更高的mybatis.技术总是发展的,了解一下可能还行,但是感觉未来是否用的上,还是个大大的问号....

jhipster拒绝引入Hypermedia的讨论
https://github.com/jhipster/generator-jhipster/issues/7063

你可能感兴趣的:(学习Spring-HATEOAS有感)