SlideShare une entreprise Scribd logo
1  sur  23
什么是REST风格应用 TonyDeng http://friendfeed.com/tonydeng http://twitter.com/wolfdeng http://delicious.com/wolf.deng http://wolfchina.blogbus.com
REST介绍 什么是REST REST与RPC的区别 为什么要使用REST REST开发框架介绍
What is REST
什么是REST REST是Roy.Thomas.Fielding在他的博士论文中提出的一种架构思想 Fielding提出REST的几种约束 REST实际上是回归http本身,或者说http是REST的实际的应用
REST关键的约束 每个资源有一个唯一标识 使用标准方法(GET、POST、PUT、DELETE) Request/Response自描述 资源多重表述(MIMEType驱动) 无状态通信 超媒体及应用状态引擎
REST的元素 数据元素(DataElements)
REST的元素 资源和资源标识符(Resources and Resource Identifiers) REST对信息的核心抽象就是资源 资源不是存储对象(storage object) 资源是一种概念上映射 资源是有层次的(root resource/sub resource) 需要URITemplate来描述资源
资源的规划 /user /user/{userId} /user/{userId}/friend /user/{userId}/friend/@{groupName} /invite /invite/{key} /family /family/{familyId} /family/{familyId}/topic/@vote /family/{familyId}/topic/{topicId} /search
REST的元素 表述(Representations) 表述包括数据、描述数据的元数据 REST通过使用一个表述来捕获资源的当前或预期的状态、在组件之间传递该表述 Request/Response自描述约束的关键
REST的元素 连接器(Connectors) 连接器代表了一个组件通信的抽象接口。 通过提供清晰的关注点分离、并且隐藏资源的底层实现和通信机制
REST的元素 组件(Components)
REST架构的过程视图
REST的三角关系 Hypermedia: HTML, XML,JSON,JPG,GIF  [POST,GET, PUT,DELETE], [CRUD] 动词 表述 Resources 名词 URI, XRI …
RESTVersus RPC
RPC简单介绍 RPC是客户端发出命令,以使服务器做出特定的操作。 JSON-RPC、XML-RPC 仅仅只是把http作为一个传输协议来使用,是对http协议的误读。 RPC有动词的倾向。
JSON-RPC JSON-RPC项目主页 http://json-rpc.org/ 例子: http://localhost/json-rpc/call { 	“method”:”postMessage”, 	”params”: ["I have a question:“,”Tony Deng”],  	"id": 101 }
XML-RPC XML-RPC项目主页 http://www.xmlrpc.com/ 简单请求的例子 http://localhost/xml-rpc/call 	<?xml version="1.0"?> 	<methodCall> 	<methodName>examples.getStateName</methodName> 		<params>  			<param> 				<value><id>41</id></value> 			</param>  		</params> 	</methodCall>
REST和RPC的区别 REST强调资源有唯一的URI,RPC强调过程(动词)有统一的接口来激发它们。 REST回归HTTP最初的设计,RPC仅仅是把HTTP作为传输协议来使用 REST强调各个组件的松耦合;RPC耦合更加紧密,无组件概念 REST是由超文本驱动,RPC由方法驱动 REST强调HTTP通信的语义可见性,通过消息头和标准的HTTP方法来体现;RPC把语义封装在HTTP消息体中。 RPC的机制是根据语言的API(language API)来定义的,而不是根据基于网络的应用来定义的。
Why REST?
优点 使用业界开放的标准协议 架构清晰,松耦合 无状态服务,很方便水平扩展(scaleout) 拥有幂等性和安全操作 面向资源开发 回归HTTP本身,天生就是为了Web应用 Fielding在论文中所阐述的REST是作为一种架构风格的REST。他所设计的HTTP和URI就是根据REST的思想来设计的,REST其实就是Web架构本身,也是Web在技术上取得成功的原因。 HTTP和URI其实就是为建造具体的REST风格架构实例而服务的。 它是一种很好的分布式应用的架构风格
REST开发框架介绍
遵循JSR311(JAX-RS)规范的框架 Restlet Jersey RESTEasy CXF
其他框架 Spring3.0 ROR(Rubyon Rails) RIP(Rest in Python)

Contenu connexe

Similaire à 什么是REST风格应用

陽明大學/FHIR 快速跳坑指南
陽明大學/FHIR 快速跳坑指南陽明大學/FHIR 快速跳坑指南
陽明大學/FHIR 快速跳坑指南Lorex L. Yang
 
语义互操作与关联数据
语义互操作与关联数据语义互操作与关联数据
语义互操作与关联数据Shanghai Library
 
中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本Lorex L. Yang
 
Rest Ruby On Rails
Rest Ruby On RailsRest Ruby On Rails
Rest Ruby On Railsshaokun
 
RFC2616 HTTP/1.1 Reading Notes
RFC2616 HTTP/1.1 Reading NotesRFC2616 HTTP/1.1 Reading Notes
RFC2616 HTTP/1.1 Reading NotesGreen Wang
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍George Ang
 
Rest与面向资源的web开发
Rest与面向资源的web开发Rest与面向资源的web开发
Rest与面向资源的web开发topgeek
 
從SOA到REST -- Web Service、WCF、WebAPI的應用情境
從SOA到REST -- Web Service、WCF、WebAPI的應用情境從SOA到REST -- Web Service、WCF、WebAPI的應用情境
從SOA到REST -- Web Service、WCF、WebAPI的應用情境MIS2000 Lab.
 
Fast Esp搜索系统
Fast Esp搜索系统Fast Esp搜索系统
Fast Esp搜索系统xiaochawan
 

Similaire à 什么是REST风格应用 (14)

陽明大學/FHIR 快速跳坑指南
陽明大學/FHIR 快速跳坑指南陽明大學/FHIR 快速跳坑指南
陽明大學/FHIR 快速跳坑指南
 
Intro to REST
Intro to RESTIntro to REST
Intro to REST
 
Intro to rest
Intro to restIntro to rest
Intro to rest
 
资源整合与Web2.0
资源整合与Web2.0资源整合与Web2.0
资源整合与Web2.0
 
Kevenjiaoda
KevenjiaodaKevenjiaoda
Kevenjiaoda
 
资源整合与Web2.0
资源整合与Web2.0资源整合与Web2.0
资源整合与Web2.0
 
语义互操作与关联数据
语义互操作与关联数据语义互操作与关联数据
语义互操作与关联数据
 
中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本中正大學/FHIR 快速掃描 R4 版本
中正大學/FHIR 快速掃描 R4 版本
 
Rest Ruby On Rails
Rest Ruby On RailsRest Ruby On Rails
Rest Ruby On Rails
 
RFC2616 HTTP/1.1 Reading Notes
RFC2616 HTTP/1.1 Reading NotesRFC2616 HTTP/1.1 Reading Notes
RFC2616 HTTP/1.1 Reading Notes
 
腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍腾讯大讲堂25 企业级搜索托管平台介绍
腾讯大讲堂25 企业级搜索托管平台介绍
 
Rest与面向资源的web开发
Rest与面向资源的web开发Rest与面向资源的web开发
Rest与面向资源的web开发
 
從SOA到REST -- Web Service、WCF、WebAPI的應用情境
從SOA到REST -- Web Service、WCF、WebAPI的應用情境從SOA到REST -- Web Service、WCF、WebAPI的應用情境
從SOA到REST -- Web Service、WCF、WebAPI的應用情境
 
Fast Esp搜索系统
Fast Esp搜索系统Fast Esp搜索系统
Fast Esp搜索系统
 

Plus de Tony Deng

一页纸项目管理
一页纸项目管理一页纸项目管理
一页纸项目管理Tony Deng
 
Docker at the gate
Docker at the gateDocker at the gate
Docker at the gateTony Deng
 
《我们如何工作》—质量保障
《我们如何工作》—质量保障《我们如何工作》—质量保障
《我们如何工作》—质量保障Tony Deng
 
《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通Tony Deng
 
我们为何工作--找到正确的工作方式
我们为何工作--找到正确的工作方式我们为何工作--找到正确的工作方式
我们为何工作--找到正确的工作方式Tony Deng
 
漫谈职业规划
漫谈职业规划漫谈职业规划
漫谈职业规划Tony Deng
 
一次Http请求过程分析
一次Http请求过程分析一次Http请求过程分析
一次Http请求过程分析Tony Deng
 
一次Code review引发的思考
一次Code review引发的思考一次Code review引发的思考
一次Code review引发的思考Tony Deng
 
My sql迁移总结
My sql迁移总结My sql迁移总结
My sql迁移总结Tony Deng
 
一次项目的探险旅程
一次项目的探险旅程一次项目的探险旅程
一次项目的探险旅程Tony Deng
 
Scrum敏捷开发模型
Scrum敏捷开发模型Scrum敏捷开发模型
Scrum敏捷开发模型Tony Deng
 
Shoutv 冯晓东
Shoutv 冯晓东Shoutv 冯晓东
Shoutv 冯晓东Tony Deng
 
技术债务的形成
技术债务的形成技术债务的形成
技术债务的形成Tony Deng
 
我们不了解的计算机世界(二)
我们不了解的计算机世界(二)我们不了解的计算机世界(二)
我们不了解的计算机世界(二)Tony Deng
 
我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历Tony Deng
 
实时任务调度
实时任务调度实时任务调度
实时任务调度Tony Deng
 
节约内存:Instagram的redis实践
节约内存:Instagram的redis实践节约内存:Instagram的redis实践
节约内存:Instagram的redis实践Tony Deng
 

Plus de Tony Deng (20)

一页纸项目管理
一页纸项目管理一页纸项目管理
一页纸项目管理
 
Docker at the gate
Docker at the gateDocker at the gate
Docker at the gate
 
《我们如何工作》—质量保障
《我们如何工作》—质量保障《我们如何工作》—质量保障
《我们如何工作》—质量保障
 
《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通
 
我们为何工作--找到正确的工作方式
我们为何工作--找到正确的工作方式我们为何工作--找到正确的工作方式
我们为何工作--找到正确的工作方式
 
SDN介绍
SDN介绍SDN介绍
SDN介绍
 
漫谈职业规划
漫谈职业规划漫谈职业规划
漫谈职业规划
 
一次Http请求过程分析
一次Http请求过程分析一次Http请求过程分析
一次Http请求过程分析
 
图解Git
图解Git图解Git
图解Git
 
一次Code review引发的思考
一次Code review引发的思考一次Code review引发的思考
一次Code review引发的思考
 
My sql迁移总结
My sql迁移总结My sql迁移总结
My sql迁移总结
 
一次项目的探险旅程
一次项目的探险旅程一次项目的探险旅程
一次项目的探险旅程
 
Scrum敏捷开发模型
Scrum敏捷开发模型Scrum敏捷开发模型
Scrum敏捷开发模型
 
Shoutv 冯晓东
Shoutv 冯晓东Shoutv 冯晓东
Shoutv 冯晓东
 
技术债务的形成
技术债务的形成技术债务的形成
技术债务的形成
 
我们不了解的计算机世界(二)
我们不了解的计算机世界(二)我们不了解的计算机世界(二)
我们不了解的计算机世界(二)
 
HBase
HBaseHBase
HBase
 
我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历
 
实时任务调度
实时任务调度实时任务调度
实时任务调度
 
节约内存:Instagram的redis实践
节约内存:Instagram的redis实践节约内存:Instagram的redis实践
节约内存:Instagram的redis实践
 

什么是REST风格应用