`
redhacker
  • 浏览: 489243 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

REST介绍

    博客分类:
  • REST
 
阅读更多
以下内容是与某机构的一个约稿的部分,但最后没有发表,发布出来,以飨各位REST爱好者学习!文后有Fielding博士的论文和HTTP协议规范,可以下载。

1.1 REST概念的起源

随着全球计算机技术的日新月异,各种新技术层出不穷,在互联网领域,以谷歌,亚马逊,雅虎,脸谱等著名互联网公司为领袖,掀起了名为WEB2.0的技术革命。经过了漫长一段时间的摸索前行与总结经验,WEB2.0技术的发展更加注重WEB技术的效率、简单性,以及WEB的本质等方面的内涵。

在当前时期,我们每天都可以看到许时髦的技术名词,如:Big Data,SOA, cloud computing,REST,Web Service等等,以至于一个WEB技术的初学者看到这些名词,会陷入一种焦躁的状态,不知道他们该从何学起,即便是阅读了一篇技术文章,或者读了几本相关的技术书籍,也不一定能抓住WEB技术的本质。WEB的本质是什么?这就要谈到WEB的起源,现代WEB技术基础的主要是奠基在美国加州大学欧文分信息与计算机科学博士Roy Thomas Fielding的一篇名为《架构风格与基于网络的软件架构设计》的博士论文,要弄清楚WEB的本质,首先应该对这篇论文进行深入的学习和研究。

Roy Thomas Fielding博士是HTTP和URI等Web架构标准的主要设计者,Apache HTTP服务器的主要开发者。他在他的博士论文里提出了“架构风格”这个软件领域的专业术语,推导出一个称为“REST”的架构风格,并详细阐述了REST架构风格的推倒过程,指出不同架构的评价标准就是其背后的的架构风格。值得注意的是,REST指的是一种架构风格的名称,这里的风格,不同于我们通常所说的个性化的含义,它代表的一组特征,在软件领域我们把它叫做架构约束。

1.2 REST在软件架构中的位置

为什么说REST就是现代WEB的本质或基础?他在我们的软件架构中处于什么样的位置?带着这些疑问,我们继续进行探讨。

我们在前面谈到,REST其实是Fielding博士提出一种基于网络的软件架构设计风格,其英文全称是“Representational State Transfer”,翻译成中文为“表述性状态转移”。对REST更通俗的解释就是:它是软件架构的一种分类,我们把具有某一组特征的软件架构设计称之为REST Style。

REST的一个重要概念是对资源的抽象,资源可以用一个全局的定位符来引用,即我们经常听到的URI这个网络术语。为了维护这些资源,网络组件之间、服务器端与客户端之间通过一种标准接口HTTP来交换这些资源的表现。REST最显著的几个特征如下:

1.网络上的所有事物都被抽象为资源。REST把所有网络的事物都抽象为资源(Resource)是一个全新的理念,这跟互联网早期人们认为:网络上的事物都是一个文档、一张图片有所区别的。这里的资源是抽象的概念,它可以是北京一天的天气,新浪网发布的一篇新闻,微博上一张图片等静态的概念,它也可以是银行的一笔转账,github上某开源软件的一个版本更新这样动态的概念,它还可以是复数的概念,某电商网站今天最热卖的五个商品。总之,资源是抽象的概念,它是一个符号,至于它背后所指的是网络上的什么事务,这个并不重要。

2.每个资源对应一个唯一的资源标识符。为了准确的表达资源这个抽象概念,W3C标准化组织设计一种符号进行资源的标识,这就产生URI标准规范,用URI来标识网络上的一个资源。

3.通过通用的连接器接口对资源进行操作。REST架构风格的一个实例就是HTTP协议。HTTP是REST架构中的连接器组件,它用来将软件组件间的通讯连接起来。从软件应用层的协议来看,目前基于REST架构风格的 HTTP1.1协议可以说是一统天下。

4.对资源的各种操作不会改变资源标识符。对于资源的操作时通过HTTP协议来进行的,HTTP上的操作通常使用GET、POST、PUT、DELETE这四种,他们代表获取资源、创建资源、创建或更新资源、删除资源四个操作。HTTP的CRUD概念类似于数据库操作的CRUD操作。CRUD的规律来源于自然世界的“生、见、变、灭”的自然规律。

5.所有的操作都是无状态的。REST要求每个客户端负责保存自己的状态,服务器应从每次与客户端的信息中获得足够多的内容,以识别客户端当前的状态,从而决定给予客户端怎样的反馈。

从上面五个特征来看,REST正是我们目前接触的WEB技术的特征,而实际上支撑整个现代互联网应用的HTTP1.1协议和URI规范正是由Fielding博士主导设计的,并对其进行了参考实现。因此,对于对于WEB本质的学习,应从REST学起,而落实到具体的技术细节,我们可以从HTTP协议开始。

对于我们准备或正在构建基于WEB的应用程序或服务,应使用REST架构风格的特征所导致的架构属性对架构设计进行指导,从而更加有利于我们构建一个高效的应用或服务,换句话说,REST是WEB软件架构的设计应遵守的设计准则或设计思想。

1.3 什么是RESTful Web Service

在WEB产生后,人们对WEB产生了浓厚的兴趣,以至于各种应用层出不穷,很快基于WEB的B/S结构代替了传统的基于桌面应用的C/S结构而成为复杂软件的主流方案。随着各应用之间数据交互的日益增多,出现很多新的交互技术,如XML-RPC、JSON-RPC这类应用层面基于HTTP的私有交互协议,慢慢的人们发现各个应用对外提供的服务接口规则不统一,集成起来有许多困难,于是出现SOAP协议,SOAP协议是用来解决服务接口的规范性问题。
SOAP协议扩展性很好,安全性也考虑的很全面,但是使用起来却有些复杂,更重要的是在互联网蓬勃发展的今天,人们越来越认识到追溯WEB的本质,才能创造出简单而又高效的WEB服务,于是一个新的名词RESTful web services应运而生, RESTful web services使用RESTful架构风格构建的服务,由于其轻量的特性和在HTTP上直接传输数据的能力,在互联网服务部署技术的选择上,使用RESTful风格构建服务正在逐渐成为基于SOAP技术的有力挑战者。

1.4 RESTful Web Service规范的发展

目前,在Java社区,关于RESTful Web Service规范有两个JSR规范,一个是JSR311规范,另一个是JSR339规范,关于这两个规范还有另外两个名字,分别是JAX-RS1.0和JAX-RS2.0。JAX-RS即Java API for RESTful Web Services,是一个Java 编程语言的应用程序接口,支持按照表述性状态转移(REST)架构风格创建Web服务。JAX-RS使用了Java SE5引入的Java标注来简化Web服务的客户端和服务端的开发和部署。JSR339规范为JSR311规范的升级规范,目前JSR311规范与JSR339规范均已完成。

1.5 RESTful Web Service的实现方案

关于RESTful Web Service的实现方案有两种:一种是按照JAX-RS规范的标准实现,另外一种是按照自定义的方式实现。

JAX-RS标准实现的框架比较有名的有:Jersey、Apache Wink等,其中,Jersey是JAX-RS规范的参考实现,比较有代表性。

非标准实现的框架中比较有名的有:Spring MVC3.0、Restlet等,其中,Spring MVC3.0由于Spring框架在开发社区的影响力,使得它在非标准实现中比较有代表性,并且使用人群较多。
另外、除了这些成熟的开发框架以外,要实现REST Web Service也可以利用 Apache URL重写机制,HTTPClient开发包,Java Servlet等方式实现。

1.6 REST技术应用的意义

REST技术应用的意义有两点:

第一、REST使得现在流行的互联网应用在架构设计上回归本质,能够更加充分的利用REST架构风格中的各种架构属性提升应用的品质。

第二、REST的轻量级、简单的特点更现行某些技术的复杂性形成鲜明的对比,使得构建应用或服务变得简单易行。在开发者来看,一旦理解了REST技术内容,设计应用系统或服务时,可以使架构更加接近WEB本质,充分利用已有的基础设施。对于应用系统或服务的使用者来将,REST推荐使用有意义的URI作为资源接口,系统更加容易理解,系统间交互或人机交互更加友好。

如果您觉得本文对您有益,请点击博文后的google广告或在博主微店(美鲜果店)订购一份水果以表感谢,对作者表示支持,谢谢!
8
0
分享到:
评论
8 楼 xuezhongyu01 2017-09-21  
这个翻译是错误的,transfer是烙印或者印记的意思,所以是表述性状态烙印,google翻译里transfer的英文意译a small colored picture or design on paper that can be transferred to another surface by being pressed or heated.
7 楼 redhacker 2017-04-12  
sz7250 写道
恩。不错,初步了解一下rest设计概念。


谢谢支持!
6 楼 sz7250 2017-02-10  
恩。不错,初步了解一下rest设计概念。
5 楼 kivil 2016-05-18  
讲解的非常好,多谢分享!
4 楼 redhacker 2014-12-11  
u014701409 写道
感谢 ,帮助了解这个概念


谢谢支持!
3 楼 u014701409 2014-12-08  
感谢 ,帮助了解这个概念
2 楼 redhacker 2013-12-16  
sunshine_bean 写道
讲的很详细,第一次接触这个概念。非常感谢
]
谢谢支持!
1 楼 sunshine_bean 2013-12-11  
讲的很详细,第一次接触这个概念。非常感谢

相关推荐

    REST服务开发实战

    REST介绍  如果要说什么是REST的话,那最好先从Web(万维网)说起。  什么是Web呢?读者可以查看维基百科的词条,具体的我就不多说了。总之,Web是我们在互联网上最常用的服务,甚至在某些人的心中,互联网就是Web...

    REST介绍文档

    Jaxrs基本概念、基础知识介绍,Redhat PPT文档

    rest基础实例开发

    这里详细介绍了rest开发所需jar包,以及基本流程。还有对代码的介绍,可以看看!

    REST API.md

    REST API的开发框架介绍:JSR-311,REST Web Services框架 JAX-RS,java接口;### REST Web Application多层框架 REST 应用场景,适合和不适合什么 基于HTTP的REST, 介绍资源uri,传输格式,对资源的操作(GET、...

    SOA与REST 用REST构建企业级SOA解决方案

     《SOA与REST:用REST构建企业级SOA解决方案》深入介绍了SOA与REST的原理、术语及特性;深入阐述了二者之间的差异及合作点;重点阐述了如何将REST作为媒介来实现SOA的战略目标,通过对REST服务的建模流程和专为REST...

    REST特点介绍

    REST是一种典型的Client-Server架构 无 状态 缓存 统一的接口 分层结构 多重表述

    rest风格webservice框架

    RESTLET介绍 Restlet项目为“建立REST概念与Java类之间的映射”提供了一个轻量级而全面的框架。它可用于实现任何种类的REST式系统,而不仅仅是REST式Web服务。 Restlet项目受到Servlet API、JSP(Java Server Pages...

    REST详细介绍

    REST的介绍,来源,限制条件,约束规则等方面的分析和学习。

    gerrit-rest-java-client, Gerrit代码审查的Java REST客户端.zip

    gerrit-rest-java-client, Gerrit代码审查的Java REST客户端 gerrit-rest-java-client 简介Gerrit代码审查工具 REST API的Java实现。仅支持 Gerrit 2.6或者更新版本的( 。旧版本中缺少/不完整的REST API ) 。

    REST_cn 中文版

    然后我介绍了表述性状态转移(Representational State Transfer,REST)的架构风格,并且描述了如何使用REST来指导现代Web架构的设计和开发。 REST强调组件交互的可伸缩性、接口的通用性、组件的独立部署、以及用来...

    REST in practice,英文

    介绍REST实践的书,很不错,有助于理解REST。

    Django-REST-framework教程中文版

    django接口开发教程。主要介绍如何通过Django-Rest-Framework快速创建REST风格的API。帮助快速进行django接口开发

    flowable_rest_api接口详细介绍

    切记不要自动换行! 全是我自己对它的理解和查看源码来进行中文注解的,如果注解有错请联系我进行修改。

    REST Server in Delphi XE Using DataSnap中文版

    对于初次接触DATASNAP并尝试使用其REST方式开发WEB或多层服务器架构的人员对相关概念的正确认知极有帮助,同时也包含部分对DELPHI中使用JSON的方式有清晰的介绍

    快意编程 EXT JS Web开发技术详解.pdf

    第14章 REST介绍 246 第15章 封装Ext JS提高开发速度 262 第三篇 AJAX整合实践 第16章 Ext3+REST+Spring2+ Hibernate3整合方案 326 第17章 工时统计管理系统 392 本站提供的快意编程 EXT JS Web开发技术详解 PDF版...

    youtrack-rest-php:JetBrains YouTrack REST API PHP 客户端

    PHP YouTrack REST介绍YouTrack REST API PHP 客户端使用与连接。 。内容安装用法更改日志贡献测试安全贡献者备择方案执照关于 Cyber​​Cog 特征框架不可知。 使用合约保持高定制能力。 多种授权策略:Token、...

    REST结构全面解析手册

    REST (Representational State Transfer)是代表状态传输的缩写。它代表了分布式超媒体系统的体系结构风格,该风格是Roy Field在他的论文中定义的。它是一种针对网络应用的设计和开发方式...本手册将为您做出详细介绍。

    Django restframework课件笔记详解

    Django restframework课件笔记详解,对Django restframework各功能模块的介绍以及真实案例分析。

    django rest framework vue 实现用户登录详解

    主要介绍了django rest framework vue 实现用户登录详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics