REST 的知识 【转载】
2009-06-12 01:04
155 查看
该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明!陈希章原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/04/24/1442553.html原文标题:REST 的知识 【转载】 原文发表:2009/4/23 22:08:00 |
表象化状态转变(英文: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这些现有的广泛流行的协议和标准。[b]资源是由URI来指定。
[/b]对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
通过操作资源的表形来操作资源。
[b]资源的表现形式则是XML或者HTML,取决于是读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式
[/b][编辑]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, ...
[编辑]REST的优点
可以利用缓存Cache来提高响应速度
通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
浏览器即可作为客户端,简化软件需求
相对与其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
不需要额外的资源发现机制
在软件技术演进中的长期的兼容性更好
[编辑]实现
Ruby on Rails1.2以后的版本支持REST model。作者:陈希章 出处:http://blog.csdn.net/chen_xizhang 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
相关文章推荐
- REST 的知识 【转载】
- 谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解(转载)
- 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结 转载
- 线程的基础知识(转载自huntjap的专栏)
- int自动封装Integer的小知识(转载)
- 转载_BlueTooth: 蓝牙基础知识进阶——链路控制操作
- [转载]IT知识体系结构图
- ASCII、Unicode和UTF-8编码知识详解——转载
- [转载] ANTLR——编译原理基础知识
- 【转载】WCF REST 工作总结(二)
- (转载)C++从零开始(十一)中篇 --类的相关知识
- 步进电机相关基础知识及常见问题(转载)
- JAVA相关基础知识(转载)
- 关于linux图形界面编程基本知识 - 技术文档 - 程序开发 Linux时代 - 开源、... (转载)
- 转载电脑小知识
- 转载:关于错排的相关知识
- 【转载】DirectX SDK版本知识
- 转载:JAVA相关基础知识
- ASP.NET资源大全-知识分享 【转载】
- .NET Framework基础知识(二)(转载)