官方:REST(Representational State Transfer)指的是一种架构设计风格,而满足这种设计风格的应用程序或设计就被认为是RESTful的。这也是目前互联网中最流行的一种软件架构风格,它结构清晰、符合标准、易于理解,越来越多的应用服务开始使用RESTful这种架构风格,尤其是那些基于HTTP协议的网络服务。
这话要是有人能听懂就是天才,网上大部分资料还是原话转或融入有限的理解。我自己研究了一番,理解了发起者的意图,自己通俗的给大家解释一下。
目的: 规范一种风格,使系统可以长期存在,支撑持久系统。围绕2点恒定不变展开,一点是表现层恒定,也就是本质,图标就是图标,标题就是标题,多久都不会变的。另一点是定义状态变化,增删改查什么的,这个永久都不会变复杂,就那么多。
解释:定义一种接口设计风格,使接口描述为资源以及资源对应的状态切换,状态切换指增删改查或crud(创建、查询、更新、删除)。
举例说明:
我想定义2个接口,一个是获取信息,一个是删除信息,以下接口看起来是没有问题的,而且大家一般也是这么做的
/user/getinfo
/user/delinfo?id=
但是,这不是RESTful的,因为你定义了一个行为,将行为细节都交给接口实现的,每一个行为独占一个接口,如果业务有变更,你可能还要改,比如要求只能删除7天之前的。以下接口则是RESTfull的,接口仅描述了资源,具体操作由指定的动作来完成。
GET /user/info
DEL /user/info?id=
这样,服务端仅需要简单的维护资源,做状态切换却可。对于只能删除7天之前的这种事,则由上层逻辑去控制,底层安稳的一直存在下去,除非某一天,确实不用这个资源了。
用途:
RESTful风格,相当于将逻辑抽象出了一层客观存在的与事实对应的一层,加强了这一些的持久层,上层无论怎么变,这层可以不变。
价值:
非常适用于前后端分离场景
和HTTP关系:
RESTful不一定用http实现,但http确实非常适用于实现RESTful
其他说明:
接口不能有状态和依赖,否则破坏了RESTful性质,不然业务调整使依赖关系变更时,还得改接口。