`
阅读更多
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】

    应用Rails进行REST开发

    #### 1.1 什么是REST? REST(Representational State Transfer),这是一种由Roy Fielding在他的博士论文中提出的架构风格。REST的核心思想是通过标准HTTP协议中的GET、POST、PUT、DELETE等方法来请求和操作网络上...

    C#-ASP.NET-REST-API-SAMPLE

    **什么是REST?** REST(Representational State Transfer,表述性状态转移)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以资源为中心,通过统一接口来交互数据。REST API通常由一组URI(统一资源...

    RESTful Web Service Primer

    ## 什么是REST? REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于客户端与服务器之间的交互模式。REST架构风格最初由Roy Fielding在其博士论文中提出,并逐渐成为互联网架构...

    show_rest:使用 node express 显示 rest api

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

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

    REST,全称Representational State Transfer,是Richard T. Fielding在2000年他的博士论文中提出的一种软件架构风格,主要用于设计网络应用程序。RESTful API则是遵循REST原则的Web服务接口设计规范,它强调资源的...

    REST实战(REST in Practice)

    》作者):认为本书统一了构建真实世界服务的实际方法以及对高层次抽象的清晰解释,教导读者如何以及为什么开发灵活、可协商和可发现的接口。 - **Colin Jack**(高级软件开发者):指出尽管REST可能看起来令人困惑...

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

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

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

    首先,让我们了解什么是REST API。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,通过URI(统一资源标识符)来定位资源,并使用HTTP方法(如GET、POST、PUT、...

    REST服务构建的web应用的优势和不足

    REST 服务构建的 Web 应用优势和不足 REST(REpresentational State Transfer)是一种混合架构风格,当前互联网的核心架构风格。基于 REST 服务(RESTful Service)的 Web 应用系统设计任务主要包括:识别并设计 ...

    白话REST-识别真假REST

    REST(Representational State Transfer),即“表征状态转移”,是由Roy Fielding博士在其2000年的博士论文中提出的一种软件架构风格。REST强调基于网络的分布式系统的松耦合设计,并推崇无状态通信机制。在理解...

    rest 调用有参数接口

    这篇博客文章《REST调用有参数接口》可能详细介绍了如何在Java环境中使用RESTful API进行有参数的请求。 首先,RESTful API的设计原则是使用HTTP方法(GET、POST、PUT、DELETE等)来表示资源的不同操作。当需要传递...

    REST地图与天地图叠加

    本示例探讨的主题是“REST地图与天地图叠加”,这涉及到两种不同的地图服务技术的融合,即SuperMap iClient的REST地图服务和天地图服务。我们将详细解释这两种技术及其在Flex客户端下的叠加应用。 首先,REST...

    Kepware IOT gateway使用教程 - REST Sever

    其中,REST Server 模块是实现这一目标的关键组件,它提供了基于 RESTful API 的接口,使得应用程序能够轻松地从 KEPWARE 获取或写入数据。本教程将详细介绍如何在 KEPWARE 中配置和使用 REST Server。 首先,确保...

    nodejs+websock+rest+rest调用

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

    REST Server in Delphi XE Using DataSnap中文版

    ### REST Server 在 Delphi XE 中使用 DataSnap 的关键技术点 #### 1. REST 架构简介 - **背景**: REST(Representational State Transfer)是 Web 服务领域的一个重要概念,尤其在过去十年中,随着 Web 2.0 的...

Global site tag (gtag.js) - Google Analytics