2017-08-04 16:56

博士就是博士,大公司就是大公司,大家还是大家,都会变通的。
在认识这个概念上,都有自己的看法,我个人也是有的。
restful概念在没出来之前,就已经出现了一些描述约定,后来博士给了一个比较确定思想,描述一个他的定义,描述了约束,慢慢的开始演变,抽象到一种概念的高度-restful架构;高度抽象的东西,总要有个相,这个相在每一个人心中是不同的,就像大家心中美女,那都是一人一个高度,扯远了。
博士还是伟大的,他帮大家整理了一下这个相,他说有4个成熟度等级:
1、Web服务使用http传输方式进行;这里看起来,soap也是rest的
2、Web服务引入资源,每一个资源都有唯一的标识符和表达方法;这看起来,如何表达资源,如何操作资源,必定会产生认识上分歧。
3、Web服务使用http不同方法完成不同操作,并且使用http状态返回不同结果;着看起来约束超级强悍了,因为强,所以大家都都懂这是在做什么,并不像能随意定义得了的。
举个例子:GET: /zoos/1 和GET: /zoo/get/1 ,看起来也没什么鸟用,但/zoo/get/1是一个纯表达式,而/zoos/1表示一个资源表达式,纯表达式为啥不定义/zoo/find/1,zoo/1/find 呢?想想都是问题,如果在拿着例子定义删除资源,会发现变得哭笑不得。如果zoo下面还有foo呢,资源可以这样定义/zoos/1/foos、zoos/1/foos/1,而表达式定义就更广了,让人感觉怎么都是可以的,累。看起来要求最简单资源表达式式,而且能够表达意义,还能表达状态,不是一件容易的事
4、Web服务资源使用链接,调用者根据链接就知道做什么;感觉好高级,是的这是rest架构需要做的事,目前这种实现起来难度有点高啊,可以查看HATEOAS 以及spring heateoas的实现。
相信波总的对于博文的意见,实用和快而熟的想法,也相信博主辛苦的支持资源定义意见,但总有一个成熟度是适合当前的工作的。博士没有错,大公司也没说他们的是哪一种,我们还是我们。