`
redhacker
  • 浏览: 494242 次
  • 性别: 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(Representational State Transfer)是一种设计风格,由Roy Fielding在2000年的博士论文中提出。它基于Web的架构原则,旨在创建可伸缩、可重用且可互操作的服务。在Java领域,JAX-RS(Java API for RESTful Web...

    REST服务接口文档[借鉴].pdf

    1. REST介绍 REST的核心理念是将Web服务中的每个功能或数据单元视为一个资源,通过统一资源标识符(URI)进行唯一标识。RESTful服务使用HTTP方法(GET、POST、PUT、DELETE等)来表示对这些资源的操作。这种设计使得...

    REST实战(REST in Practice)

    通过以上内容可以看出,《REST实战(REST in Practice)》不仅是一本介绍REST基本概念和技术的书籍,更重要的是它提供了一种实用的方法论,帮助读者理解如何将REST应用于现实世界的问题中,从而使分布式系统的设计更加...

    rest基础实例开发

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

    RestFul服务介绍

    REST介绍 REpresentational State Transfer (REST) 是一种软件架构风格,尤其适用于构建网络应用。REST的核心理念是将互联网上的数据视为一系列资源,每个资源都可以通过一个唯一的URL(Uniform Resource Locator...

    REST API.md

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

    谷歌浏览器插件+AdvancedRestClient+Http Rest API测试调试

    本文将详细介绍如何利用谷歌浏览器插件Advanced REST Client (ARC)进行HTTP REST API的测试和调试。 首先,让我们了解什么是REST API。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发...

    REST Server in Delphi XE Using DataSnap中文版

    此外,文章还介绍了如何利用 JSON 进行数据交换,以及如何开发与 REST 服务器交互的基于浏览器的应用程序。这些技能在现代 Web 开发中至关重要,对于想要在该领域有所成就的开发者来说是不可或缺的知识。

    Rest Severs in Delphi XE Using DataSnap

    本文将深入探讨这一主题,介绍REST(Representational State Transfer)架构原理,以及如何在Delphi环境中利用DataSnap实现RESTful服务。 首先,我们需要理解REST的基本概念。REST是一种软件架构风格,用于设计...

    Django-REST-framework教程中文版

    本教程基于Django1.9以及restframework-v3.3.3版本,着重介绍了序列化、请求和响应处理、类视图、认证和权限、关联关系及超链接处理以及ViewSets和Routers的使用。 首先,在快速入门章节中,教程引导我们如何搭建一...

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

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

    REST特点介绍

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

    C# 实现Rest服务接口,含实现文档

    本项目“C# 实现Rest服务接口,含实现文档”将详细介绍如何使用C#和ASP.NET框架来构建RESTful服务。 1. **C#语言基础**:C#是Microsoft开发的一种面向对象的编程语言,常用于Windows平台的应用程序开发,尤其在.NET...

    rest风格webservice框架

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

    蓝凌标准产品V16.0管理员手册-RestService服务管理.pdf

    * 服务介绍:该章节将介绍RestService服务管理平台的主要功能和特性。 章节三:服务运行日志 服务运行日志是指管理员可以查看和管理系统中的服务运行日志。该章节将详细介绍服务运行日志的查询和格式说明。 * ...

    Kepware IOT gateway使用教程 - REST Sever

    本教程将详细介绍如何在 KEPWARE 中配置和使用 REST Server。 首先,确保您已经安装了 32 位 Java JRE 或 JDK,版本至少为 7。这是 KEPWARE IoT Gateway 运行所必需的环境。接下来,进行 KEPWARE 的安装,在安装...

    REST参考技术文档

    这份资料可能还会介绍一些常见的RESTful框架,如Spring Boot的REST支持,以及如何通过JSON或XML来交换数据。此外,可能还会探讨错误处理、安全性考虑,以及如何测试和调试REST服务。 综合这三份文档,我们可以系统...

    Rest 开发API.

    ### REST API开发详解 #### REST概述 REST(Representational State Transfer),即表述性状态转移...通过上述介绍,我们可以看到REST不仅是一种设计风格,也是一种构建高效、可扩展和易于维护的Web服务的有效方式。

Global site tag (gtag.js) - Google Analytics