1、REST和RESTful是什么?
REST是一种软件架构风格和设计风格,主要定义C/S网络交互应用层。。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
RESTful是指符合REST风格的设计。
2、为什么会出现REST?
http协议的定义者之一Roy Fielding认为,开发者对http的理解存在严重偏差,http很多设计并没有被很好地运用,而往往只承担一个最简单的交互功能。Fielding在他的博士论文中详述了一系列规则,以“纠正”这一认知偏差。
那么这些认知偏差有哪些呢?
1)对资源的访问不规范
Url是统一资源定位符,重点是资源。而实际使用中却在叠加各种操作,如一本书的url应当是https://localhost:8080/book,不应当出现https://localhost:8080/getbook。
2)有状态和无状态混在一起
一个请求不能单独相应完整的功能,刷新页面就会出现惊喜。
3)对http使用不规范
返回的结果往往是很随意,各种错误信息本来就是用Http的状态码构成的,可是实际使用中却是错误信息和错误值乱放。
3、REST有哪些特性?
1)客户-服务器,提供服务的服务器和使用服务的客户需要被隔离对待。
2)无状态,来自客户的每一个请求必须包含服务器处理该请求所需的所有信息。换句话说,服务器端不能存储来自某个客户的某个请求中的信息,并在该客户的其他请求中使用。
3)可缓存,服务器必须让客户知道请求是否可以被缓存。
4)分层系统,服务器和客户之间的通信必须被标准化,允许服务器和客户之间的中间层可以代替服务器对客户的请求进行回应,而且这些对客户来说不需要特别支持。
5)统一接口,客户和服务器之间通信的方法必须是统一化的。数据的CRUD操作,分别对应于HTTP方法,GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。仅通过HTTP方法,就可以完成对数据的所有增删查改工作。
6)支持按需代码,服务器可以提供一些代码或者脚本并在客户的运行环境中执行。这条准则是这些准则中唯一不必必须满足的一条。
4、结语
似乎http的使用者们对REST并不怎么买账,在URL层面套用REST原则成本很高,跟成熟流行的软件设计习惯有很大出入。
参考: