对REST的一点理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hfismyangel/article/details/82314774

restful,指的是web开发中的一种接口风格,但凡稍微接触过web开发的都应该了解过。rest是Representational State Transfer的缩写,翻译后意为”表征状态转移“。刚开始接触rest的时候对这个”表征状态转移“一脸懵逼,但现在一看翻译的确实很精准,这个词应该从两方面理解,即”表征“和”状态转移“。

表征:

Representational翻译过来是”具体的“,restful中一切皆资源,通过两部分表示具体的行为,一部分是指对资源的操作,即http method定义的一些动词操所(get/post/delete/update等等),一部分规定uri的命名方式,使用类似文件目录的形式指向具体操作的资源的位置。从过这两部分可以很容易的理解接口的作用,相当于把接口的一些描述信息抽象到http协议层面,这就是所谓的Representational。

状态转移:

宏观整个web开发,其实就是数据状态的流动,明白这一点就很容易明白这个所谓的”状态转移“,前端页面上用户的行为都是对一个或多个被持久化的数据的操作。这个过程中数据状态被改变,然后像多米诺骨牌一样从页面流到后端数据库,首先是从前端流向后端,数据状态由http协议搭载,跋山涉水进入服务器,服务器也不是直接把这个数据状态流到数据库里,中间经过业务处理,业务处理的过程中也需要保存一些数据状态以便处理,就是所谓的POJO,为了避免并发问题采用贫血模型,位于线程私有的栈内存里,业务处理完成后才会流向数据库,由于java的服务器开发是基于多线程的,在将数据串行化持久到数据库的过程中必然涉及并发问题,也是整个业务系统里唯一涉及并发的位置,这个问题交给了数据库事务解决。这里的数据库并不是指RDB,而是一切分布式的数据持久化软件。从高层次上来看,”状态转移“名副其实。

rest的出发点是好的,可惜业务总是多变的,http规定的几个method并不能完全涵盖所有接口的语义,而且也有一些操作难以被抽象为资源,使用场景有限。这也是rest被称为一种”风格“而不是一种规范的原因。

猜你喜欢

转载自blog.csdn.net/hfismyangel/article/details/82314774
今日推荐