REST总结

时间:2022-04-16 07:20:14

REST是Roy Thomas Fielding博士于2000年在他的博士论文中阐述的一种架构风格和设计原则。REST并非一种协议或者标准,事实上它只是阐述了HTTP协议的设计初衷;现在HTTP在网络上被广泛应用,然而人们却越来越多的把它作为一种传输协议而非应用协议,比如SOAP类型的WebService,在SOAP中,完全把Http协议作为了其消息的载体,而对Http协议中的各种参数(例如编码,错误码等)都置之不顾。

REST的设计概念和准则如下:

  1. 网络上的所有事物都可以被抽象为资源(resource)
  2. 每一个资源都有唯一的资源标识(resource identifier),对资源的操作不会改变这些标识
  3. 所有的操作都是无状态的

如果应用程序或者架构符合REST的设计原则和风格,那么就说它是RESTful的。REST是一个抽象的概念,实现它的技术有很多种,而最广泛也最容易的当属以HTTP为基础的技术了,我们把这种方式叫做REST/HTTP,有时说REST指的就是REST/HTTP。

REST/HTTP web service与SOAP web service的比较

  1. SOAP以类似传统RPC操作的风格来实现SOA软件系统,它是以操作或者活动为核心的,有严格的规范和标准,包括安全,事务等各个方面的内容,同时SOAP强调操作方法和操作对象的分离,有WSDL文件规范和XSD文件分别对其定义;然而,REST是面向资源的,资源和URI是它的核心,只要我们要操作的对象可以抽象为资源即可以使用REST架构风格。
  2. REST Web Service的优势是简单数据操作,无事务处理,开发和调用简单,而SOAP web service有清晰的规范标准定义,能够处理较为复杂的面向活动的服务
  3. REST Web Service使用HTTP的标准方法:GET/PUT/POST/DELETE 来抽象所有 Web 系统的服务能力,SOAP Web Service只是用POST方法并通过定义自己个性化的接口方法来抽象 Web 服务
  4. REST Web Service中不同的资源用不同的URI唯一识别,SOAP Web Service中的URL只是服务的地址而操作被封装在SOAP消息体中。

REST/HTTP的优势

由于采用标准化的 HTTP 操作方法并结合其他的标准化技术,如 URI,HTML,XML 等,极大的提高了系统与系统之间整合的互操作能力,尤其在 Web 应用领域,RESTful Web 服务所表达的这种抽象能力更加贴近 Web 本身的工作方式,也更加自然。以下是它的具体优势

  1. 无状态性(Stateless)
  2. 安全操作与幂指相等特性(Safety /Idempotence)
  3. 安全控制
  4. 缓存
  5. 连接性

总结:

满足REST原则的系统充分利用了HTTP标准,具有简单,易用,扩展型好的特点,是除了类RPC风格的SOAP协议的另一种实现SOA的方式。

随机推荐

  1. 【MSP是什么】MSP认证之项目群管理学习总结

    首先要说的是,我这篇体会是针对一定的背景的,不能算是一种通用的管理方式,只能是我自己的经验总结,能给大家平常的管理提供一点思路,我就很满足了.先说说背景,我所在公司做的是大型桌面应用软件,简单点说就是 ...

  2. JVM之SerialOld收集器

    Serial收集器的老年代版本 单线程收集器 标记-整理算法 stop the world Client模式下的虚拟机使用 Server模式下,搭配Parallel Scavenge使用及CMS发生C ...

  3. SwitchyOmega

    SwitchyOmega下载安装地址: http://switchyomega.com/download.html GFWList.bak.txt教程 {"+GFWed":{&qu ...

  4. 欢迎来到Googny的博客

    本博客主要分享笔者的学习知识,以及工程中遇到的技术问题. 由于笔者技术水平有限,博客不足之处在所难免,还请各位网友不吝交流,共同进步. 一起体会分享的乐趣. JavaScript 部分 该部分深入浅出 ...

  5. API接口签名校验

    在开发app中,我们经常要为app提供接口.但是为了保证数据的安全,我们通常会对接口的参数进行加密. 1.不验证的接口api api接口请求,"http://www.xx.com/getUs ...

  6. git 权限问题:insufficient permission for adding an object to repository database .git

    在git pull 的时候报错:insufficient permission for adding an object to repository database .git (去仓库里的objec ...

  7. 栈的实现实例(C语言)

    /* stack.h */ #ifndef _stack_h #define _stack_h struct stack_record; typedef struct stack_record *st ...

  8. ABP官方文档翻译 1.5 多租户

    多租户 什么是多租户? 数据库和部署架构 多部署-多数据库 单部署-多数据库 单部署-单数据库 单部署-混合数据库 多部署-单/多/混合数据库 ABP的多租户 启用多租户 租主和租户 会话 决定当前租 ...

  9. 关于maven包的引入net.sf.json的问题

    最开始通过在pom.xml文件中加入 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId& ...

  10. Linux 线程浅析

    进程和线程的区别与联系 在许多经典的操作系统教科书中,总是把进程定义为程序的执行实例,它并不执行什么, 只是维护应用程序所需的各种资源,而线程则是真正的执行实体. 为了让进程完成一定的工作,进程必须至 ...