- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RESTfulWebService架构剖析
RESTful Web Service 架构剖析
本文内容具有一定的专业偏向性,主要面向对 Web Service 有一定理解,需要进一步了解基于 REST 形式的 Web Service 的 IT 开发人员和架构师。它不是一个知识的入门介绍,你需要较多相关领域的知识背景才能理解全部内容。
什么是 RESTful Web Service
作为互联网应用开发人员,我们经常能看到 Web Service,REST 和 RESTful Web Service 之类的描述,可我们真的清楚这些概念吗?
Web Service 简单来说是指提供给不同设备通过互联网(一般使用 HTTP 协议)进行通信和交换数据的一种服务。RESTful Web Service 是实现 Web Service 的一种方式。那么到底什么是 RESTful Web Service呢?什么又是 REST 呢?
REST 和 RESTful Web Service
REST (Representational State Transfer) 是由美国计算机科学家 Roy Fielding在2000年的博士论文提出的一种架构方式。Roy Fielding绝对可以称之为业界大牛,他现任 Adobe 首席科学家,是HTTP协议的首要作者之一,也是Apache项目的联合创始人。
REST 是一种架构方式和约定,和具体实现无关,也不一定必须基于Web。我们一般把采用 REST 架构的 Web Service 称之 RESTful Web Service。在实际项目应用中,严格来说,我们应该称这种 Web Service 为具有 REST 风格的 Web Service。原因是我们在处理和解决某些实际问题时,这种 Service 可能并不完全严格遵守 REST 架构的所有必要约定。
RESTful Web Service 和基于SOAP的 Web Services 有着本质的不同。使用 SOAP 的 Web Service 实际上是以协议(protocol)的形式工作的。因为 SOAP Web Service 严格规定了如何发现和描述 API,其传输的消息也有严格统一的格式(例如传输的载体XML有严格的格式规范)。而 RESTful Web Service 并不是协议,它没有规定传输消息的具体格式,它只是一种约定使用 REST 架构实现的 Web Service。RESTful Web Service 相比SOAP Web Service 更加简单和轻量级。现在大部分 RESTful Web Service 都使用类似的形式,例如都使用HTTP传输,使用风格类似的 URL 作为 API 和 使用 JSON 或者 XML 来传输数据等等(目前 JSON 占据主导地位,并且有持续流行的趋势[1])。
如果你之前没有接触过SOAP,你只需记住RESTful Web Service 是一种采用 REST 架构约定,更简单,更轻量级的Web Service
REST 之父大牛 Roy Fielding 在他的论文中,一共从下面6个方面阐述了 REST 架构的约定(REST 应该满足哪些条件,以及这样做会有什么好处)
REST 架构约定
CS结构(Client–server)
客户端是一个相对独立的实现,它不必考虑数据的持久化存储问题。服务端拥有和保存数据,服务端不去关心客户端内部实现,也不用关心客户端请求的上下文。服务端和客户端之间遵守相同的接口规范。在遵守相同接口规范的前提下,二者都可以独立演化,甚至可以被其它的实现替代。
无状态(Stateless)
任何时候一个客户端的请求数据都包含能够让服务端完成请求的充分信息,服务端不依赖前后不同请求的顺序和状态信息来完成请求。请求的session信息由客户端持有,并在必要时连同请求数据一起发送。服务端可以使用请求中的session信息去其它外部服务或者数据库获取相关内容进以便对该请求做权限验证等操作。
如果所需数据要通过多次请求才能完成,客户端必须自己负责记录状态(因为服务器不跟踪客户端的状态),在下次请求时附带发出。一个典型的例子是分页的实现,客户端需要自己保存当前页数,请求下一页时作为参数一起发给服务端,服务端使用该参数返回正确的下一页数据。有些设计,比如Facebook API,服务端返回数据中包含下一页数据的请求URL,客户端只要记录这个URL即可发起下一页的请求。
服务端不依赖客户端的请求顺序和状态提高了服务器的可扩展性(scalability)。比如在使用Load balancer的情况下,不能因为某个请求被分配到其它服务器而丢失某些信息从而返回不正确的数据。
您可能关注的文档
- 2014年度社会保障卡流程规范.doc
- 2014桃江户外活动联盟新春年度会主持辞.doc
- 2014经典台词,经典台词语录全集周华健经典歌词.doc
- 2014金秋助学启动仪式上讲话.docx
- 2014年度厦门会计继续教育小企业纳税会计实务.doc
- 2014跨年联欢会主持人开场白和节目串词.doc
- 2014年度研究生毕业晚会主持词.doc
- 20150125湖南省不动产商会年度会价值榜整体流程.doc
- 2015_2016学年第二学期六年级家长会班主任发言稿.docx
- 2015_2016电子商务示范企业创建规范.doc
- 2023咸阳职业技术学院招聘笔试真题参考答案详解.docx
- 2023四川化工职业技术学院招聘笔试真题及参考答案详解.docx
- 2023哈尔滨职业技术学院招聘笔试真题及参考答案详解.docx
- 2023商洛职业技术学院招聘笔试真题及答案详解1套.docx
- 2023呼伦贝尔职业技术学院招聘笔试真题参考答案详解.docx
- 2023南阳农业职业学院招聘笔试真题参考答案详解.docx
- 2023天津公安警官职业学院招聘笔试真题带答案详解.docx
- 2023年上海电机学院招聘笔试真题参考答案详解.docx
- 2023年四川艺术职业学院招聘笔试真题参考答案详解.docx
- 2023安徽体育运动职业技术学院招聘笔试真题及答案详解一套.docx
文档评论(0)