`
Taven
  • 浏览: 43403 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多
REST
表象化状态转变(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。

目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。

宗旨
REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表形。获得这些表形致使这些应用程序转变了其状态。随着不断获取资源的表形,客户端应用不断地在转变着其状态,所谓表形化的状态转变(Representational State Transfer)。

这一观点不是凭空臆造的,而是通过观察当前Web互联网的运作方式而抽象出来的。Roy Fielding 认为,

“ 设计良好的网络应用表现为一系列的网页,这些网页可以看作的虚拟的状态机,用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变。 ”


要点及标准
需要注意的是,REST是一种设计风格而不是一个标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。

资源是由URI来指定。
对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
通过操作资源的表形来操作资源。
资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。

REST的要求
客户端和服务器结构
连接协议具有无状态性
能够利用Cache机制增进性能
层次化的系统
Code On Demand - Javascript

关于状态
应该注意区别应用的状态和连接协议的状态。REST对于连接的无状态性实际上要求每次经过无状态的连接协议传送的信息必须包含应用中所有的状态信息。


实现举例
例如,一个简单的网络商店应用,

列举所有商品,

GET http://www.store.com/products
具体某一件商品,

GET http://www.store.com/product/12345
下单购买,

POST http://www.store.com/order,
<purchase-order>
  <item> ... </item>
</purchase-order>


REST的优点
可以利用缓存Cache来提高响应速度
通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
浏览器即可作为客户端,简化软件需求
相对与其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
不需要额外的资源发现机制
在软件技术演进中的长期的兼容性更好

目前许多公司提供服务的企业都用到REST模式,比如支付宝的支付接口、DISCUZ NT 3.0的API、淘宝的TOP(Taobao Open Platform)等等

互联网的下一个发展方向,在WEB这一块,我个人认为将是SOA的天下,REST也是SOA中的一种,微软目前的WCF也是SOA中的一种实现方式。

可以想象得出,未来的WEB应用,都会以API的方式去提供服务,不管是给自己本系统的不同模块之间还是与外部应用,都会采用SOA的方式,这肯定是一种趋势。

在目前的应用中,都需要考虑海量数据和大并发,那么所开发的应用都应该要能支持分布式,而SOA则是一个即可以使模块与模块之间独立,也可以使得应用和应用之间的耦合性降低,同时还先天性支持了分布式的实现模式。

这种变革将会像B/S变革C/S一样,一定会在未来的某一天,彻底改变。
分享到:
评论

相关推荐

    【rest接口】什么是rest?用swagger优雅开发rest

    【rest接口】什么是rest?用swagger优雅开发rest

    什么是REST?如何用NodeJS开发REST API?【JavaScript全栈入门教程7】

    什么是REST_如何用NodeJS开发REST_API_【JavaScript全栈入门教程7】

    show_rest:使用 node express 显示 rest api

    什么是REST? RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。 以下内容摘自阮一峰的文章: 一、起源 REST这个词,是Roy Thomas ...

    什么是REST,符合REST的API叫RESTful 两种SOA接口实现:SOAP(WebService) vs REST

    什么是REST,符合REST的API叫RESTful 两种SOA接口实现:SOAP(WebService) vs REST

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

    SOA与REST是什么?如何用REST构建企业级SOA解决方案

    怎样用通俗的语言解释什么叫REST,以及什么是RESTful?

    了解了什么是什么是REST,我们再看看RESTful的实现。最近,使用RPC样式架构构建的基于SOAP的Web服务成为实现SOA最常用的方法。RPC样式的Web服务客户端将一个装满数据的信封(包括方法和参数信息)通过HTTP发送到...

    REST开发指南

    维基百科把表述性状态转移(Representational State Transfer ,REST)定义为“分布式超媒体系统、如万维网的一种软件架构形式”。Web 朋务的 RESTful 方案被广泛规为 SOAP 的一个更简单的替代方案。

    nodejs+websock+rest+rest调用

    基于nodejs的websocket平台,该平台包括异步的数据库调用,异步的rest api访问,以及能够提供rest api的服务。...框架可能对某些人来说没什么,但是这点代码自己折腾了挺长时间,所以分值高些。有问题可留言

    REST实战(REST in Practice)

    REST实战(REST in Practice)。英文清晰PDF版。三位soa专家对于rest进行了讲求实际的解释,并且通过将web的指导原理应用到普通的企业计算问题中,向你展示了如何开发简单的、优雅的分布式超媒体系统。你将会学习到很...

    java rest api入门实例

    REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,...

    REST API.md

    REST是设计分布式网络服务或API时遵循的架构原则以及...REST 应用场景,适合和不适合什么 基于HTTP的REST, 介绍资源uri,传输格式,对资源的操作(GET、POST、PUT,DELETE,Options,Head方法,如何对应CRUD动作)

    ROP(Rest Open Platform)开发指南

    相比于http://host/user/tom,TOP使用http://gw.api.tbsandbox.com/router/rest?method=taobao.user.get&userName=tom,乍看起来纯REST简单,但是如API数量大后,TOP的风格更有优势了,因为每个TOP API用户只有参数上...

    白话REST-识别真假REST

    REST是中文翻译为表征状态转移(英文:Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。从字面意思来说,“表述”是很难理解是什么东西的?从论文上我们可以...

    rest风格webservice框架

    它可用于实现任何种类的REST式系统,而不仅仅是REST式Web服务。 Restlet项目受到Servlet API、JSP(Java Server Pages)、HttpURLConnection及Struts等Web开发技术的影响。该项目的主要目标是:在提供同等功能的同时...

    Learning WordPress REST API

    Chapter 1, Getting Started with REST API, gives you an overview of what the REST API is, how it functions, and all that it is capable of doing. You will also find information about other platforms if ...

    REST服务示例入门

    2. 由于【1】的改动,使得只有以/rest开头的URL才能映射到某资源,使用rest服务时,必须要加上/rest。 3. 由于【1】的改动,RestComponent类注册application时将资源字符串加上了/rest。 4. 由于【1】的改动和本人...

    REST Client 测试工具

    很多REST Client是不支持自动化测试RESTful API,也不支持自动生成API文档. 之前习惯用一款名字为 WisdomTool REST Client,支持自动化测试RESTful API,输出精美的测试报告,并且自动生成精美的RESTful API文档。 ...

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

    使用asp.net 实现了Rest服务接口,包括实现的文档。Rest接口返回的数据包括json、Stream等。代码结构清晰,可以直接用VS2013运行

    Android代码-RestHttp

    RestHttp网络库 --- 基于HttpURLConnection &gt; - RestHttp提供了三级缓存(服务器缓存,内存缓存,硬盘缓存),通过动态代理的方式实现了面向接口调用API。 &gt; - 封装了HttpURLConnection,简单易用的API设计。 &gt; - ...

Global site tag (gtag.js) - Google Analytics