REST总结
REST是Roy Thomas Fielding博士于2000年在他的博士论文中阐述的一种架构风格和设计原则。REST并非一种协议或者标准,事实上它只是阐述了HTTP协议的设计初衷;现在HTTP在网络上被广泛应用,然而人们却越来越多的把它作为一种传输协议而非应用协议,比如SOAP类型的WebService,在SOAP中,完全把Http协议作为了其消息的载体,而对Http协议中的各种参数(例如编码,错误码等)都置之不顾。
REST的设计概念和准则如下:
- 网络上的所有事物都可以被抽象为资源(resource)
- 每一个资源都有唯一的资源标识(resource identifier),对资源的操作不会改变这些标识
- 所有的操作都是无状态的
如果应用程序或者架构符合REST的设计原则和风格,那么就说它是RESTful的。REST是一个抽象的概念,实现它的技术有很多种,而最广泛也最容易的当属以HTTP为基础的技术了,我们把这种方式叫做REST/HTTP,有时说REST指的就是REST/HTTP。
REST/HTTP web service与SOAP web service的比较
- SOAP以类似传统RPC操作的风格来实现SOA软件系统,它是以操作或者活动为核心的,有严格的规范和标准,包括安全,事务等各个方面的内容,同时SOAP强调操作方法和操作对象的分离,有WSDL文件规范和XSD文件分别对其定义;然而,REST是面向资源的,资源和URI是它的核心,只要我们要操作的对象可以抽象为资源即可以使用REST架构风格。
- REST Web Service的优势是简单数据操作,无事务处理,开发和调用简单,而SOAP web service有清晰的规范标准定义,能够处理较为复杂的面向活动的服务
- REST Web Service使用HTTP的标准方法:GET/PUT/POST/DELETE 来抽象所有 Web 系统的服务能力,SOAP Web Service只是用POST方法并通过定义自己个性化的接口方法来抽象 Web 服务
- REST Web Service中不同的资源用不同的URI唯一识别,SOAP Web Service中的URL只是服务的地址而操作被封装在SOAP消息体中。
REST/HTTP的优势
由于采用标准化的 HTTP 操作方法并结合其他的标准化技术,如 URI,HTML,XML 等,极大的提高了系统与系统之间整合的互操作能力,尤其在 Web 应用领域,RESTful Web 服务所表达的这种抽象能力更加贴近 Web 本身的工作方式,也更加自然。以下是它的具体优势
- 无状态性(Stateless)
- 安全操作与幂指相等特性(Safety /Idempotence)
- 安全控制
- 缓存
- 连接性
总结:
满足REST原则的系统充分利用了HTTP标准,具有简单,易用,扩展型好的特点,是除了类RPC风格的SOAP协议的另一种实现SOA的方式。
随机推荐
- 我跟着siki学Unity3D游戏开发——PongGame
一.屏幕坐标转换为世界坐标. 1.游戏逻辑,根据界面布局,将墙体控制到对应的位置: vector3 position=Camer.main.ScreenToWorldPoint(new vetor2( ...
- AC自动机(模板)
#include <cstdio> #include <cstring> #include <iostream> #include <cstdlib> ...
- python单元测试--深入理解unittest
单元测试的重要性就不多说了,可恶的是python中有太多的单元测试框架和工具,什么unittest, testtools, subunit, coverage, testrepository, nos ...
- 在线添加磁盘,扩展LVM卷案例
一.添加硬盘,在线扫描出来 首先到虚拟机那里添加一块硬盘,注意必须是SCSI类型的硬盘. 扫描硬盘,不用重启操作系统的. echo "- - -" > /sys/class/ ...
- 从Go、Swift出发:语言的选择需谨慎
本文转自 : http://www.csdn.net/article/2014-12-09/2823025 摘要:无论是开源的Go,还是闭源的Swift,新的语言总是利弊一体.不过可以确定的是,新的语 ...
- 线段树(updata+query)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- nginx中配置跨域支持功能
vi /etc/nginx/nginx.conf 加入如下代码 http { ###start#### add_header Access-Control-Allow-Origin *; add ...
- OC 代理 协议 委托 数据源的概念
(网摘) OBJC 中的 protocol 相当于 java 里的接口,delagate 就是接口的实现类(C中的回调类似 ): 数据源就是对象遵循了存储数据的协议,可以存储使用数据 协议表示了方法可 ...
- thinkphp项目目录
# ThinkPHP核心文件介绍 ├─ThinkPHP.php 框架入口文件 ├─Common 框架公共文件 ├─Conf 框架配置文件 ├─Extend ...
- SQLServer XML类型
SQL Server从2005起开始支持xml类型,这个数据类型对于后期的改变非常有用.一对多的关系在后期变成了多对多的关系,XML类型就是一个不错的选择. 1.创建测试数据 创建表 --创建表,包含 ...