




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
REST架构与案例分析 大纲 回顾Web的发展HTTP主流Web服务介绍REST抽象概念REST式架构 ROAREST案例分析REST式服务框架 Restlet 回顾Web的发展 HTTP HypertextTransferProtocol 超文本传输协议 NO 超文本转移协议 URI URLWeb1 0 静态 只读 仓库Web2 0 双向 交互Web3 0 数据化 服务化 平台化HTMLJavaScript富客户端 FlexSilverlight SOAP HTTP 把文档装入信封 客户端 服务器 响应 请求 HTTP请求 方法 method 表示客户端希望服务器如何处理该信封 有GET POST PUT DELETE HEAD OPTION TRACE和CONNECT八个方法 路径 path 请求链接里主机名后面部分 即信封上的地址 请求报头 requestheaders 一组起元数据作用的键值对 类似信封上贴的标签信息 HTTP除定义了一套标准报头外 程序也可以自己定义报头 实体主体 entity body 也称作文档或表示 即信封里的文档 一般情况下 请求实体主体可为空 HTTP响应 响应代码 responsecode 通知客户端请求成功或失败 以及如何处理信封里的内容 响应报头 responseheader 类似请求报头 实体主体 entity body 同样是放在信封里的文档 但绝大多数情况它不会为空 HTTP报头 标准报头HostUser AgentAccept CharsetAccept EncodingAccept LanguageIf Modified SinceContent TypeContent LengthContent EncodingContent LanguageAccept RangesExpiresLast ModifiedEtagDataWWW AuthenticateDateCache Control非标准报头CookieSet CookieX WSSE自定义报头不重新发明已存在的报头不将应该放在实体主体里的信息放进报头命名遵循惯例 名称以 X 开头 HTTP响应代码 状态码 3位数字 分类1xx 通知 仅在与HTTP服务器沟通时使用2xx 成功 成功收到 理解和接受动作200 OK 201 Created 204 NoContent 3xx 重定向 为完成请求 必须进一步采取措施301 MovedPermanently 303 SeeOther 4xx 客户端错误 请求包含错误的语法或不能完成400 BadRequest 401 Unauthorized 403 Forbidden 404 NotFound 405 MethodNotAllowed 5xx 服务器端错误 服务器不能完成明显合理的请求500 InternalServerError 503 ServiceUnavailable HTTP图示 主流WEB服务架构 REST式面向资源的架构具备Web特征的服务 静态网站 许多未采用SOAP的只读Web服务 许多只读型Web应用等PRC式架构所有采用XML RPC遗留协议的服务 几乎所有的SOAP服务REST RPC混合架构大部分Web应用 大量采用MVC模式的Web应用 REST简介 REST RepresentationalStateTransfer 表述性状态转移 一种架构风格不是一个具体的标准或者架构 只是一套设计原则和一种架构风格HTTP是这种架构风格的实现一种真实描述Web的方式 不被特定时期的特定应用程序概念歪曲 是对Web的本质回归提供区分良好实践和糟糕实践的途径 判断特定实践是否与Web架构一致 REST抽象概念 资源 URI规范 RFC2396 资源可以是任何有标示的东西 并非所有的资源都是通过网络能够获取的 任何事物 只要有被引用的必要 就是一个资源 resource 它可以是一个实物 也可以是一个抽象的概念 通常一个资源是某个可以存放在计算机上并体现为比特流的事物 在Web中 可以这样认为 资源是URI标示的东西 REST抽象概念 表示 资源和表示不是一码事 Web上获取的不是资源 而是资源的表示 对于给定的资源 可以有很多不同的表示 REST抽象概念 状态 在客户 服务端模式下 让客户端维护应用状态 并确保服务端向服务器发出的请求都包含理解请求所需的全部信息 而服务器不应该维护该状态 REST式解决方案是使用URI 每个概念上独立的资源都可使用单个URI 不希望通过Cookie或隐藏在有效负载的参数来提供额外信息 例 查看john在某网站2008 10 10的所有文档资料 REST架构 REST设计准则 网络上的所有事物都被抽象为资源每个资源对应一个唯一的资源标识URI通过HTTP协议方法作连接器对资源进行操作对资源的任何操作不改变资源标识URI所有的服务器操作都是无状态的 违背REST的恶果 服务端必须维持状态难以对URI进行缓存应用部署难以水平扩展存在安全隐患数据与表象混杂无法准确表达与理解请求含义对不同客户端要分代码处理URI难以持久化暴露技术实现且易变更URI代码方法入侵URI REST式架构 ROA 面向资源的架构 Resource OrientedArchitecture ROA 一个具体的REST式架构一种把实际问题转换成REST式Web服务的方法 ROA的四个概念 资源资源的名称 URI 资源的表示资源间的链接 一些资源的例子 某软件的1 0 3版一张杭州旅游地图QC中某个项目的Bug列表某某公司04季度的营业额一个风险点或一个风险模型某张报表某个单元格的内容一个流程中的一个节点任务陈老师与女明星的关系等等 URI与资源的关系 URI既是资源的名称 也是资源的地址 一个资源必须至少有一个URI 而一个URI只能指示一个资源 任何两个资源不可能是同一个 两个不同的资源在某一时期可能指向同样的数据 同一资源具有多个URIs的虽然能让引用变得更加容易 但坏处是将产生 稀释效应 客户端无法自动验证它们是指向同一个资源 资源的表示 对于一个本身就是一些数据项的资源 最容易想到的一个表示就是这些数据本身 如HTML格式的网页新闻对于代表实物或其他难以归结为信息的事物 其表示就是关于资源的状态的任何有用信息 如 连上Web的自动饮料机 提供关于实物饮料的数据即使在一个对象的诸多表示中 已经有一个表示包含实际数据了 它也还可以有其他包含元数据的表示 如在线书店为每本书提供该书电子版与评论两种表示表示的选择信息可以放在HTTP报头或URI中 资源间的链接 大多数表示是超媒体 hypermedia 的 它不仅包含数据 还包含指向其它资源的链接 RoyFielding博士论文中指出 将超媒体作为应用状态的引擎 即客户端应用状态在服务器提供的 超媒体 的指引下发生变迁 ROA四个属性 特征标志 可寻址性 addressability 无状态性 statelessness 连通性 connectedness 统一接口 uniforminterface 可寻址性 资源是通过URI暴露的 URI是可以寻址的 浏览器打开google网站 搜索框输入 陈老师 点击搜索 服务器所能提供的每一则有价值的信息都应该作为资源来发布 区别资源的可寻址与应用的可寻址 许多Web应用不是像Web一样可寻址的 尤其是Ajax应用 如GmailWeb服务是可寻址的 不过调用该服务的GmailWeb应用不是可寻址的 无状态性 状态分两种 应用状态 applicationstate 和资源状态 resourcestate 前者保存在客户端 后者保存在服务端 每个HTTP请求是完全孤立 请求包含服务器实现该请求的全部信息 不依赖于之前某个请求 无状态性意味着服务端不应保存应用状态 客户端应当管理自己的应用状态 连通性 资源的表示 具有链接 的特性即连通性 它要求资源应当通过它们的表示彼此链接起来 HTTP会话的当前状态不是作为资源状态保存在服务器上的 而是被客户端作为应用状态来跟踪的 统一接口 四个常见操作接口 获取资源的一个表示 HTTPGET创建一个新资源 向一个新URI发送HTTPPUT 或向一个已有的URI发送HTTPPOST修改已有资源 向已有URI发送HTTPPUT删除已有资源 HTTPDELETE两个辅助操作接口 获取的一个只包含元数据的表示 HTTPHEAD查看一个资源支持那些HTTP方法 HTTPOPTIONS安全性与幂等性 GET和HEAD请求是安全的GET HEAD PUT和DELETE请求是幂等的 PUT与POST创建资源 创建资源时 PUT与POST的区别 若客户端决定新资源的URI 用PUT若服务器决定新资源的URI 用POST在一个博客系统中使用PUT与POST的比较 整个博客资源 weblogs myweblog 博客里一片文章资源 weblogs myweblog entries 1 使用PUT与POST比较 ROA设计步骤 1 规划数据集2 将数据集划分为资源3 设计URI为资源命名4 暴露一个统一接口的子集5 设计来自客户端的表示6 设计发给客户端的表示7 用超链接和表单把资源与已有资源联系起来8 考虑有哪些典型的事件经过9 考虑可能出现的错误情况 肯德基REST案例 案例描述顾客与服务员 光临KFC 排队等候 查看食品列表 点餐 生成订单 付款 在旁等候 下一位 服务员与食品加工师 接受订单 制作食品 完成后递交食品 下一个订单 服务员与顾客 交付食品 顾客去享用食物 状态机 顾客状态机食品加工师状态机 订餐OK 支付OK 食物OK 选定订单 食物OK 看看有哪些食物 资源URI食物清单 foodlist http KFCS 下订单吧 资源URI订单 order http KFCS 还想要点什么 资源URI订单 order 123 http KFCS OK付款吧 资源URI付款 payment order 123 http KFCS 食品加工师的工作 食品加工师轮询获取订单 然后选定一个订单 制作完成 再次轮询 轮询的可伸缩性差 Web的轮询机制如何解决 资源URL所有订单 orders http KFCS 制作食品 资源URI订单 order 123 http KFCS 食品完成 资源URI订单 order 123 http KFCS 结论 我们可以用Web来描述所有必需的交互 我们可以利用现有的Web模型处理一些简单的意外的事 例如无法修改处理中或已处理完毕的订单 而不必自己发明新的异常或错误处理机制 我们所需的一切都是HTTP现成提供的 而且 即便发生了那些不愉快的事 客户端仍然可以向它们的目标迈进 HTTP提供的特性起初看来是无关紧要的 但这个协议现在已经取得广泛的一致 并得到广泛的部署了 而且所有的软件与硬件都能一定程度上理解它 当我们看到其他分布式计算技术 如WS 处于割据状态的格局时 我们意识到了HTTP享有的巨大成功 以及它在系统间集成方面的潜力 结论 续 甚至在非功能性方面 Web也是有益的 在我们碰到临时故障时 HTTP操作 GET PUT和DELETE 的幂等性质令我们可以进行安全的重试 内在的缓存机制既屏蔽了故障 又有助于灾难恢复 通过增强的可用率 HTTPS和HTTP认证有助于基本的安全需求 尽管我们的问题域是人为制造的 但我们所强调的技术同样可以应用于分布式计算环境 我们不会伪称Web很简单 除非你是天才 Web可以解决一切问题 除非你是超级乐观的人 或受到REST信仰的感染 但事实上 在局部 企业级和Internet级进行系统集成 Web是个健壮的框架 Restlet REST
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福建省南平市延平区2025年七下英语期中综合测试试题含答案
- 玩具违法试题及答案
- 土木工程材料试题及答案
- 2025年锅炉设备股权转让协议
- 2025年烹饪设备采购协议
- 2025年策划版企业采购合作协议
- 2025年共同策划现代物流合作发展协议书
- 2025年儿童领养协议标准格式
- 2025年度夏令营活动策划权益保障协议
- 2025年智能家居设备销售合作协议书模板
- 教育学原理简答题和论述题
- 新改版教科版三年级下册科学全册精编实验总结(超全)
- 游博物馆小学作文
- 新概念英语电子版
- 格力2匹柜机检测报告KFR-50LW(50530)FNhAk-B1(性能)
- 2023年山东省济南市高新区中考物理一模试卷(含解析)
- 工程质量保证措施
- 刘醒龙文集:生命是劳动与仁慈
- 探寻中国茶一片树叶的传奇之旅2023章节测试答案-探寻中国茶一片树叶的传奇之旅超星尔雅答案
- 预制管桩吊装方案
- 2023年版一级建造师-水利工程实务电子教材
评论
0/150
提交评论