REST和RESTFul Web Service学习知识整理

2014-10-12 11:47:34

请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模)

REST知识整理(Craft6.cn 颜超敏).jpeg  
 (可以右键选择:在新标签页打开图片)

============================================================= REST知识整理 Craft6.cn 颜超敏 ============================================================= ------------------------------------------------------------- 1 总结拾锦 ------------------------------------------------------------- 1.1 REST是一种思想,并没有限定任何技术,任何语言 1.2 REST是一种风格而不是一个标准 1.3 REST让我们从资源的角度来审视互联网应用并知道我们的设计 1.4 REST本质就是HTTP调用,用于降低各个应用之间的耦合度 1.5 良好的REST架构,应该有统一的表示方式和数据格式, 能够有效的把各种资源组织起来,并能够进行有效的控制。 ------------------------------------------------------------- 2 技术对比 ------------------------------------------------------------- 2.1 SOAP 2.1.1 简单对象访问协议,基于XML 2.1.2 是一种应用协议,可以跨多种传输协议来传递消息(比如HTTP、SMTP) 2.1.3 Soap是针对RPC的解决方案。其初衷是作为一种轻量级解决方案出现的, 2.1.4 采用xml格式定义过程调用和返回,一个Soap消息就是一个特定格式和内容的XML文档。 2.2 RESTFul Web Service 2.2.1 本质上就是Web 2.2.2 任意一个URL地址,一个HTTP网页都可以称作是Restful web service。 2.2.3 Rest把网络上的所有事物抽象为资源 2.2.4 把对资源的操作抽象为CRUD,对应HTTP的PUT,Get,Post,Delete。 2.2.5 资源不是静态的数据,而是数据加上状态,是随时间变化的,每个资源有一个唯一的标识,URL。 2.3 和XML-RPC对比 2.3.1 XML-RPC 2.3.1.1 远程过程调用 2.3.1.2 消息必须包含名称、运行服务的程序和输入参数 2.3.1.3 只能使用有限的数据类型和一些简单的数据结构 2.3.2 REST 2.3.2.1 不关心正在运行的程序是什么,仅仅请求命名资源 2.4 和SOAP对比 2.4.1 SOAP 2.4.1.1 特点 2.4.1.1.1 通过XML Schema的不断发展来定义数据类型 2.4.1.1.2 SOAP消息的开头部分可以是任何类型的XML命名空间声明 2.4.1.1.3 代价是系统之间增加了更多的复杂性和不兼容性 2.4.1.2 面对的应用需求是RPC 2.4.1.3 强调接口,面向接口,消息封装的是过程调用 2.4.1.4 HTTP是承载协议,SOAP才是应用协议 2.4.2 REST 2.4.2.1 应用需求是分布式超媒体系统(WEB) 2.4.2.2 面向资源,强调数据,请求和响应消息都是数据的封装 2.4.2.3 HTTP是承载协议,也是应用协议 ------------------------------------------------------------- 3 应用场景 ------------------------------------------------------------- 3.1 适合REST 3.1.1 需要对外暴露服务 3.1.2 有限的带宽和资源 3.1.3 完全无状态的操作 3.1.4 缓存考虑 3.1.4.1 利用无状态的特性,信息可以被缓存 3.2 不适合REST 3.2.1 性能要求高的系统内部之间服务调用 3.3 适合SOAP 3.3.1 异步处理和调用 3.3.2 形式化契约 3.3.3 有状态的操作 ------------------------------------------------------------- 4 设计概念和准则 ------------------------------------------------------------- 4.1 所有事物都抽象为资源 4.2 每个资源都有一个唯一的标识 4.3 通过通用的连接器接口对资源进行操作 4.4 对资源的各种操作不会改变资源标识 4.5 无状态通信 4.5.1 所有操作都是无状态的(stateless) ------------------------------------------------------------- 5 状态 ------------------------------------------------------------- 5.1 状态表述转移 5.1.1 URL是状态的表述 5.1.2 REST风格的应用是状态迁移过程 5.2 无状态服务器 5.2.1 服务器不需要记录任何的Session 5.2.2 状态通过URL的形式记录在客户端 5.2.3 资源本身具有天然的状态 ------------------------------------------------------------- 6 RESTFul API ------------------------------------------------------------- 6.1 一种基于HTTP协议和REST架构策略的简单Web Service 6.2 特征 6.2.1 采用URI标识资源,类似目录结构。 6.2.2 使用标准的HTTP方法,比如:POST,GET,PUT和DELETE。 6.2.3 使用统一的接口 6.2.4 Web服务接受与返回的互联网媒体类型,比如JSON,XML,YAML等。 6.2.5 幂等性:发送一次和多次请求引起的边界效应是一致的。 6.2.6 无状态 6.3 规划要点 6.3.1 一个URI标识一个资源,但是一个资源可以被多个URI标识。 6.3.2 资源有层次,这个层次在URI充分表现出来 6.3.3 在规划URI的时候,需要定义一些团队内部确认的关键字或符号, 这些关键字或符号是有特殊意义的,不能随便使用。 6.3.4 需要有一个URI定义的文档,以备以后的查询和维护。 6.3.5 可以使用URI Template来描述URI的定义 ------------------------------------------------------------- 7 发布REST服务注意 ------------------------------------------------------------- 7.1 版本规划 7.1.1 便于升级和维护 7.2 评估API的关键程度和负载能力 7.3 当浏览器不支持PUT和DELETE的处理 7.3.1 可以增加隐藏域区分 7.3.2 如:hidden _method = PUT | DELETE ------------------------------------------------------------- 8 RIA + REST ------------------------------------------------------------- 8.1 将表现层与后台彻底分离 8.2 方便程序员和美工协同开发 8.2.1 程序员可以无需关心表现层的方法 8.3 有利于采用快速原型的开发方式 8.3.1 没有后台逻辑之前,表现层就可以开始设计了 8.4 合理分配负载,减轻服务器压力 8.4.1 按需获得数据 8.4.2 压力较大的渲染工作在客户端完成 8.5 提高用户体验 ------------------------------------------------------------- 9 基于Spring实现 ------------------------------------------------------------- 9.1 XML视图 9.1.19.1.2 ModelAndView model = new ModelAndView("xStreamMarshallingView"); 9.2 JSON消息转换 9.2.1 MappingJacksonHttpMessageConverter 9.2.2 @ResponseBody 9.2.3 gson工具:gsonToJson 9.2.4 json-lib:fromObject 9.3 RequestMapping的method参数 9.3.1 method = RequestMethod.PUT 9.4 RestTemplate 9.4.1 getForObject、postForObject、put、delete方法 9.4.2 http://spring.io/blog/2009/03/27/rest-in-spring-3-resttemplate/ 9.5 http://kingxss.iteye.com/blog/1487745 ------------------------------------------------------------- 10 基于Jersey实现 ------------------------------------------------------------- 10.1 http://blog.csdn.net/cwb1128/article/details/18254305


可通过扫描左侧二维码阅读本文。本站文章均为颜超敏原创,欢迎转载,请注明出处即可,转载可通过下面的社会化工具快速完成。

分享到:


REST和RESTFul Web Service学习知识整理

REST,RESTFul Web Service;REST和SOAP;Spring 和REST,HTTP协议PUT、DELETE,降低应用耦合度,REST架构,REST设计风格设计思想

本文对REST和RESTFul相关的知识进行整理,方便学习参考使用。

包括总结拾锦;和XML-RPC、SOAP的技术对比;应要场景;设计概念和准则;

状态;RESTFul API;发布REST服务注意要点;RIA+REST;

基于Spring实现REST等。

颜超敏,唯心六艺,Craft6.cn,电子商务博客,电子商务研发,电商研发,电子商务研究,电商研究,电子商务专家,电商专家,电子商务知识,电商知识,电子商务教程,电商教程,电子商务模式,电子商务平台,电子商务商业模式,电子商务数据库设计,电商数据库设计,电子商务系统分析,Java架构设计,Java软件架构,B2C,O2O,o2o模式,o2o电子商务,o2o电子商务平台,中国电子商务,电子商务平台建设方案
粤ICP备14060523号 Copyright @2014 -唯心六艺软件