其实REST风格一直在身边

之前一直对rest风格很是模糊,听过一直也没注意过到底是什么意思,其实日常开发中系统一般已经部分符合rest风格了,只不过没有注意到。

先看下rest风格系统几个特性:

1.客户——服务器

2.无状态

3.可缓存

4.分层系统

5.统一接口

6.支持按需代码

下面是对应的详解:

1.即客户端和服务器分开,这是基本的,很好理解,总不能让用户都去服务器上操作吧。

2.无状态。这点挺重要的,因为rest风格强调"资源"这个概念,我理解的这里的资源就是后台处理请求后返回给前端的响应,即前端展示需要的东西就是资源。举个例子,查人员信息,人员的详细信息就是前端需要的资源,这资源哪里来的呢,当然是后台处理请求从数据库里查出来的。再比如增加人员,后台处理请求后也会返回一个带状态码和msg的响应,前端需要这个状态码或者msg去展示增加成功或者增加失败,这些状态码和msg也是资源。总之前端发请求给后台,然后返回给前端响应里的东西就是资源,rest风格很强调资源这个概念。无状态是什么意思呢,即每个资源都可以被一个url请求直接获取到,重要的是"直接"这个概念。先举一个有状态的概念,如果想查一个人员信息,有状态的话就需要先登录平台,有了登录平台的状态再点击人员管理,有了点击了人员管理这个状态后再去新增人员,可以画个图:

可能是通过跳转,可能是通过重定向,具体怎么实现不管,有点类似早期servlet实现web项目的风格,总之有状态就是一个请求无法直接新增人员,而无状态的图怎么画呢:

也许有人有疑问说这需要权限控制以及登陆状态之类的啊,不然也太不安全了。那权限验证包括登陆状态验证可以传一个参数在请求里面带过来啊,现在用的比较多的token验证就是这样。其实现在的系统大部分都符合无状态这个要求,特别是在Spring框架下面开发,这里只不过理一下概念。

3.可缓存。这也没什么,定义是服务器必须让客户知道请求是否可以被缓存,这个在系统中一般不涉及。

4.分层系统。即客户端与服务器之间要有其他层,比如网关代理等,这个也很常见。

5.统一接口。这个在rest风格中也很重要,我们都知道业务操作一般都是增删改查,请求方式也有get,post,put以及delete等不同的类型,根据接口功能统一接口的类型,这就是统一接口,而不是所有的请求都是get或者post方式。确实这两种请求方式就够了,但是这样不符合rest风格标准。

6.支持按需代码。这个准则是可有可无的,即服务器可以提供一些脚本在客户端运行。 

猜你喜欢

转载自blog.csdn.net/weixin_42447959/article/details/84800085