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的方式。
随机推荐
- JS滚轮事件(mousewheel/DOMMouseScroll)了解
已经没有了小学生时代过目不忘的记忆力了,很多自己折腾的东西.接触的东西,短短1年之后就全然不记得了.比方说,完全记不得获取元素与页面距离的方法(getBoundingClientRect),或者是不记 ...
- 无法安装或运行此应用程序。该应用程序要求首先在"全局程序集缓存(GAC)"中安装程序集
在做winform程序发布时遇到了这个问题,在我的机子上是可以正常运行的,但到别人的机子上就出现了这个错误.为此问题头疼了一上午终于搞定! 遇到这个问题一定是配置环境的原因, 1.你可以在程序 发布 ...
- 使用DataReader读取数据
List<User> allUsers = new List<User>(); SqlConnection conn = new SqlConnection(连接字符串); S ...
- struts2中的国际化
[java] view plaincopy 实现struts2中国际化其实非常简单 首先,struts2中的国际化是通过资源文件来配置的. 资源文件分为:action类级,package类级,还有we ...
- Unity-视图
Project(项目)视图:显示项目所包含的全部资源,每个Unity项目文件夹都会包含一个Assets文件夹,Assets文件夹是用来存放用户所创建的对象和导入的资源. Hierarchy(层级)视图 ...
- busybox中tftp服务器使用命令
参数说明:-l 是local的缩写,后跟存在于Client的源文件名,或下载Client后重命名的文件名.-r 是remote的缩写,后跟Server即PC机tftp服务器根目录中的源文件名,或上传S ...
- css:hover选择器
:hover 选择器用于选择鼠标指针浮动上面的元素. :hover选择器可以用于所有的元素,不单是链接. 提示::link选择器设置指向未被访问页面的链接的样式,:visited选择器用于设置指向已被 ...
- mac 键盘特殊标记
- php的json_encode函数问题
php的json_encode函数问题: $ary = []; $ary[0] = 'a'; $ary[1] = 'b'; echo json_encode($ary) . '<br>'; ...
- ANDROID 开机启动VNC SERVER
ANDROID 开机启动VNC SERVER 背景信息: 最近在做一个项目,在项目需求中有这么一项“要把VNC SERVER 添加到android里并让其开机自启动”.其实做这个项目也挺缚手缚脚的,因 ...