RESTful Web Services已经渐渐開始流行, 主要是用于解决异构系统之间的通信问题。非常多站点和应用提供的API,都是基于RESTful风格的Web Services,比較就有Google,如今就来简单的介绍下它。

一、 RESTful Web Services是什么?

REST(Representation State Transfer)描写叙述了一种设计Web应用的架构风格,它是一组架构约束条件和原则,满足这些约束条件和原则的应用程序或设计就是 RESTful风格的。

而符合RESTful风格的Web Services,就是RESTful Web Services。如今来简单说下REST的原则。

REST原则例如以下

第一:资源由URI来指定

在Web应用中,全部的事物都应该拥有唯一的ID。代表ID的统一概念是URI。

URI构成了一个全局命名空间,使用URI表示你的资源,那么久意味着它们获得了一个唯一、全局的ID。

第二:使用HTTP方法

REST 要求开发者使用 HTTP 方法,而且使用方式与协议定义一致。 这个 REST 设计原则建立了创建、读取、更新和删除(CRUD)操作与 HTTP 方法之间的一对一映射。 其关系例如以下 :

1)创建资源,应该使用 POST 方法。

       2)检索某个资源。应该使用 GET 方法。

       3)更改资源状态或对其进行更新,应该使用 PUT 方法。

       4)删除某个资源,应该使用 DELETE 方法。

 第三: 资源多重表述

表述由需求决定。表述方式包含XML、JSON、HTML等。即server端须要向外部提供多种格式的资源数据。供不同的client使用。比方移动应用可以使用XML或JSON和server端通信,而浏览器则可以理解HTML。

第四:无状态

对server端的请求是无状态的。完整、独立的请求不要求server在处理请求时检索不论什么类型的应用程序上下文或状态。无状态约束使server的变化对client是不可见的,由于在两次连续的请求中,client并不依赖于同一台server。一个client从某台server上收到一份包括链接的文档,当它要做一些处理时,这台server宕掉了,可能是硬盘坏掉而被拿去修理,可能是软件须要升级重新启动——假设这个client訪问了从这台server接收的链接,它不会察觉到后台的server已经改变了。

二、 RESTful Web Services与SOAP Web Services的比較

我们通常所说的Web Service都是基于SOAP的Web Service,它也是解决异构系统间通信问题的经常使用方案。那么,RESTful Web Services相对于SOAP Web Services有什么优势呢?我们为什么要学习RESTful Web Services。使用已经流行非常久的SOAP Web Services不就够了吗?

首先。RESTful Web Services接口更易于使用

RESTful Web Services使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 来抽象全部 Web 系统的服务能力,而SOAP 应用都是通过定义自己个性化的接口方法来抽象 Web 服务。相对来说,RESTful Web Services接口更简单。

这样的标准化的 HTTP 操作方法。结合其它的标准化技术,如 URI。HTML,XML 等,将会极大提高系统与系统之间整合的互操作能力。尤其在 Web 应用领域。RESTful
Web Services所表达的这样的抽象能力更加贴近 Web 本身的工作方式,也更加自然。同一时候。使用标准 HTTP 方法实现的 RRESTful Web Services也带来了 HTTP 方法本身的一些优势:

1)无状态性

HTTP 协议从本质上说是一种无状态的协议。client发出的 HTTP 请求之间能够相互隔离。不存在相互的状态依赖。基于 HTTP 的 ROA,以非常自然的方式来实现无状态服务请求处理逻辑。对于分布式的应用而言。随意给定的两个服务请求 Request 1 与 Request 2。因为它们之间并没有相互之间的状态依赖,就不须要对它们进行相互协作处理,其结果是:Request 1 与 Request 2 能够在不论什么的server上运行。这种应用非常easy在server端支持负载平衡
(load-balance)。

2)安全操作与幂指相等特性

HTTP 的 GET、HEAD 请求本质上应该是安全的调用,即:GET、HEAD 调用不会有不论什么的副作用,不会造成server端状态的改变。对于server来说,client对某一 URI 做 n 次的 GET、HAED 调用,其状态与没有做调用是一样的,不会发生不论什么的改变。

HTTP 的 PUT、DELTE 调用。具有幂指相等特性 , 即:client对某一 URI 做 n 次的 PUT、DELTE 调用,其效果与做一次的调用是一样的。HTTP 的 GET、HEAD 方法也具有幂指相等特性。

HTTP 这些标准方法在原则上保证你的分布式系统具有这些特性。以帮助构建更加健壮的分布式系统。

       其次。RESTful Web Services更easy实现缓存

对于基于网络的分布式应用,网络传输是一个影响应用性能的重要因素。怎样使用缓存来节省网络传输带来的开销,这是每个构建分布式网络应用的开发者必须考虑的问题。

REST 的应用能够充分地挖掘 HTTP 协议对缓存支持的能力。

当client第一次发送 HTTP GET 请求给server获得内容后,该内容可能被缓存server (Cache Server) 缓存。当下一次client请求相同的资源时,缓存能够直接给出响应。而不须要请求远程的server获得。而这一切对client来说都是透明的。

三、 总结

事实上,我们有非常多场合能够使用到RESTful Web Services,Web系统间的交互,移动client与Webserver端的通信等。唯独很多其它的实践RESTful,才干更好的理解RESTful Web Services。我不过对RESTful Web Services的一个简介,为以后更深入的了解做好准备。

Restful WebService简介的更多相关文章

  1. Jersey框架一:Jersey RESTful WebService框架简介

    Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 Jersey框架三:Jersey对HTTPS的 ...

  2. Eclipse + Jersey 发布RESTful WebService(一)了解Maven和Jersey,创建一个WS项目(成功!)

    一.下文中需要的资源地址汇总 Maven Apache Maven网站 http://maven.apache.org/ Maven下载地址: http://maven.apache.org/down ...

  3. SOAP Webservice和RESTful Webservice

    http://blog.sina.com.cn/s/blog_493a845501012566.html REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的 ...

  4. Restful是什么,SOAP Webservice和RESTful Webservice

    首先,应该怀着这样一种心态来学习Restful——Restful你可以将其理解一种软件架构风格,并且诠释了Http协议的设计初衷,所以不要把他理解的那么神秘,Restful风格有好处,当然也是有坏处的 ...

  5. RESTful WebService入门(转)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/229206 REST ...

  6. CXF发布restful WebService的入门例子(客户端)

    上篇说了怎么用cxf发布restful webservice,由于浏览器只能对该service发送http的GET请求,所以如果想对服务器上的数据,还需要实现客户端. 客户端的实现方式有无数种...可 ...

  7. CXF发布restful WebService的入门例子(服务器端)

    研究了两天CXF对restful的支持.   现在,想实现一个以 http://localhost:9999/roomservice 为入口, http://localhost:9999/roomse ...

  8. RESTful Webservice (一) 概念

    Representational State Transfer(表述性状态转移) RSET是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩 ...

  9. 使用CXF与Spring集成实现RESTFul WebService

    以下引用与网络中!!!     一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存 ...

随机推荐

  1. eclipse包分层

    方法很简单,如下图所示: 1.点击项目栏窗口的右上角的倒三角 2.选择Pachage Presentation(包呈现) 3.选择Hierarchical(分层)

  2. 关于js事件冒泡和事件捕获

    事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件.相反的,事件冒泡是自下而上的去触发事件.绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获.true,事件捕获: ...

  3. BZOJ2212【POI2011】ROT:Tree Rotation 线段树合并

    题意: 给一棵n(1≤n≤200000个叶子的二叉树,可以交换每个点的左右子树,要求叶子遍历序的逆序对最少. 分析: 求逆序对我们可以想到权值线段树,所以我们对每个点建一颗线段树(为了避免空间爆炸,采 ...

  4. Python之爬虫-中国大学排名

    Python之爬虫-中国大学排名 #!/usr/bin/env python # coding: utf-8 import bs4 import requests from bs4 import Be ...

  5. 【转载】分布式系列文章——Paxos算法原理与推导

    转载:http://linbingdong.com/2017/04/17/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E5%88%97%E6%96%87%E7%AB%A0 ...

  6. Hadoop2.x异常总结

    问题1: 在执行bin/hdfs namenode -format格式化HDFS命令时,抛出异常,异常如下: 16/10/26 18:32:45 ERROR namenode.NameNode: Fa ...

  7. 01--安装Activiti流程设计器eclipse插件

    Activiti1 安装流程设计器eclipse插件 Name:Activiti BPMN 2.0 designer(随便起个名字) Location: http://activiti.org/des ...

  8. //……关于TCP三次握手与四次挥手

    TCP的概述 TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16 ...

  9. 一种RC滤波电路的验证

    在做电源的时候,在开关管的D极经常是出现不想看到的尖峰脉冲.以CCFL推挽式缓冲电路为准,我与一个同学杨进行了相应的验证. 其中的出来的现象和反思如下: 1,加上电阻和电容串联的滤波的确能将尖峰脉冲消 ...

  10. AutoMapper 使用总结1

    初识AutoMapper 在开始本篇文章之前,先来思考一个问题:一个项目分多层架构,如显示层.业务逻辑层.服务层.数据访问层.层与层访问需要数据载体,也就是类.如果多层通用一个类,一则会暴露出每层的字 ...