0.前言
如果说JAVA将万物抽象成了对象,REST设计风格则将万物抽象成了资源。
1.从哪来
具象状态传输(英文:Representational State Transfer,简称REST)是Roy Thomas Fielding博士(http协议定义的参与者)于2000年在他的博士论文 “Architectural Styles and the Design of Network-based Software Architectures” 中提出来的一种万维网软件架构风格。
目前在三种主流的Web服务实现方案中,因为REST模式与复杂的SOAP和XML-RPC相比更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务执行图书查询;雅虎提供的Web服务也是REST风格的。
2.是什么
需要注意的是,REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。
- 资源是由URI来指定。
- 对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
- 通过操作资源的表现形式来操作资源。
- 资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式
3.干什么
因为REST设计风格基于HTTP协议,所以整个设计将通过四个动词状态(GET / PUT / DELETE / POST)对请求进行功能类别定义。
HTTP请求方法在RESTful API中的典型应用
此图来自
Richardson, Leonard; Ruby, Sam, RESTful Web Services, O’Reilly, 2007 ((May 8, 2007)), ISBN 0596529260
通过这种定义形式,我们可以将一个对于URL的处理方法对应为4种类型的处理模式,大大降低了开发的复杂程度;另外,通过对HTTP状态码的处理我们可以讲后台的一部分不重要的业务逻辑转移到前台进行处理,这将简化服务器与客户端之间信息传输的大小(HTTP状态码为固定存在)
如下图所示,状态码的多样化可以为我们在前台处理不同业务打下基础:
4.为什么
为什么我们要使用REST设计方式?
因为本身基于HTTP协议的原因,REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁
可更高效利用缓存来提高响应速度
通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
浏览器即可作为客户端,简化软件需求
相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
不需要额外的资源发现机制
在软件技术演进中的长期的兼容性更好