REST实战中文版

所需积分/C币:26 2015-12-06 11:03:25 23.79MB PDF
4
收藏 收藏
举报

REST的实战文档,希望与大家共同参考,一起徜徉在技术的海洋
REST实战 Jim Webber, Savas Parastatidis e lan robinson著 李锟俞黎敏马钧崔毅译 OREILLY° Beijing· Cambridge· Farnham·Kbn; Sebastopol· Tokyo O'Reilly Media,Inc授权东南大学出版社出版 东南大学出版社 图书在版编目(cP)数据 REST实战/(美)韦伯( Webber,J),(美)帕拉斯 泰迪斯( Parastatidis,s.),(美)鲁滨逊( Robinson,I) 著,李锟等译,一南京:东南大学出版社,20119 书名原文: RESTin Practice ISBN978-7-5641-2965-1 L①R…·Ⅱ@韦…⑨帕…③鲁…④李…Ⅲ①计算 机网络ⅣV.①TP393 中国版本图书馆CIP数据核字(2011)第184763号 江苏省版权局著作权合同登记 图宇:102010-448号 @2010 by O'Reilly Media, Inc Simplified Chinese Edition, jointly published by O'Reilly Media, Inc, and Southeast University Press, 2011. Authorized translation of the English edition, 2011 O'Reilly Media, Inca, the owner of all rights to publish and sell the same. All rights reserved including the rights of reproduction in whole or in part in any form. 英文原版由O' Reilly Media,Inc.出版2010 简体中文版由东南大学出版社出版2011,英文原版的翻译得到 O'Reilly Media,Ine,的授权。此简体中 文版的出版和销舊得到出版权和销售权的所有者 O" Reilly Media,Inc.的许可。 版权所有,来得书面许可,本书的任何部分和全部不得以任何形式重制 REST实战 出版发行:东南大学出版社 地址:南京四牌楼2号邮编:210096 出版人:江建中 网址http://www.seupress.cam 电子邮件:press@supress.com 印刷:扬中市印刷有限公司 开本:787毫米x980毫米16开本 印张:255印张 字数:428千字 版次:2011年9月第1版 印次:2011年9月第1次印刷 书号:ISBN978-75641-2965-1 印数:1-4000册 定价:78.00元(册) 本社图书若有印装质量问题,请直接与读者服务部联系。电话(传真):02583792328 O Reilly Media,nc.介绍 O'Reilly Media,Inc.是世界上在UNIX,X、 Internet和其他开放系统图书领域具有 领导地位的出版公司,同时是联机出版的先锋。 从最杨销的《 The Whole Internet User' s Guide& Catalog》(被纽约公共图书馆评为 二十世纪最重要的50本书之一)到GNN(最早的 Internet门户和商业网站),再到 Website(第一个桌面PC的Wψb服务器软件), OReilly Media,Inc.一直处于 Internet 发展的最前沿。 许多书店的反馈表明, O'Reilly Media,Inc.是最稳定的计算机图书出版商—每 本书都一版再版。与大多数计算机图书出版商相比, OReilly Media,Inc,具有深厚 的计算机专业背景,这使得 O'Reilly Media,ine.形成了一个非常不同于其他出版商 的出版方针。 O'Reilly Media,Inc.所有的编辑人员以前都是程序员,或者是顶尖级 的技术专家。 OReilly Media,Inc,还有许多固定的作者群体—他们本身是相关领 域的技术专家、咨询专家,而现在編写著作, O'Reilly Media,Inc.依靠他们及时地 推出图书。因为O' Reilly media,Inc.紧密地与计算机业界联系着,所以 OReilly Media,Inc,知道市场上真正需要什么图书。 译者序 今天,Web(万维网)已经是无处不在。对于90后一代人来说,上网简直就像阳光、 空气和水一样,是生命中必不可少的部分。 Web取得了巨大的成功,其原因是多方面的:技术层面、社会层面、经济层面、文化 层面等等。早在十几年前,有一群人想要总结清楚Web取得了巨大成功,技术层面的 原因究竟是什么? 经过深入细致的分与析之后,他们将web取得成功在技术层面的原因总结为一种崭新 的分布式应用架构风格( architectural style)—REST(表述性状态转移)。简单来 说,Wb的架构风格就是REST,所有希望在Web生态系统中繁荣发展的技术,都应该 符合REST这种架构风格的要求。 事实上,HTTP1.1规范正是基于REST架构凤格的指导原理来设计的,其目标是实 现符合REST凤格的分布式应用架构。HTTP1.1规范(RFC2616)在1999年6月正式 发布。次年(2000年),HTTP1.规范的主要设计者RoyFielding在他的博士论文 《 Architectural Styles and the Design of Network- based Software architectures》(中文 版名为《架构风格与基于网络的软件架构设计》)中,系统地阐述了REST这种架构 风格的推导过程和详细理念。 架构风格这个术语,对于国内的软件开发者来说,感觉非常陌生。架构风格与某种具 体的架构相比,是一个更加抽象的概念,它其实是一种研究和评价软件架构设计的 方法。我来做个类比:在建筑学中也存在很多种类的架构风格,每一种架构风格会对 建筑的具体样式(架构)产生很多约束。建造一座建筑,一定要考虑与所处环境的架 构风格相融合,而不是相冲突。试想一下,假如在苏州著名的拙政园(代表样式为小 桥流水、移步换景的窗户,表达出天人合一的理念)旁边建造一座西方哥特式(代表 样式为直刺天空的尖顶,表达出人定胜天的理念)的大教堂,看起来将会是何等的突 兀。假如在苏州园林周围建造了大量与该地的传统架构凤格完全冲突的新式建筑,估 计不会有人再有兴趣到苏州去游玩了 大致了解了建筑学中的架构风格,我们再来看看计算机软件应用中的架构风格,特别 是分布式应用的架构风格。 除了REST之外,另外两种常见的分布式应用架构风格为DO(分布式对象)和RPC (远程过程调用)。这两种架构风格在企业应用的开发中得到了广泛的应用,然而, web架构的设计者们却有意避免采用这两种架构风格。主要的原因是运行Web应用的 互联网环境,与运行企业应用的企业内网环境有很大的差别。那么,互联网环境有哪 些独有的特点呢? (1)可伸缩性要求难以预测和无法控制:一个Web应用的并发访问量是开发者难以预 测和无法控制的。 2)安全性要求难以预测和无法控制:一个Web应用所接受的请求格式是开发者难以 预测和无法控制的,有可能出现大量恶意构造的请求格式。 (3)松耦合至关重要:因为存在着大量吴构的系统,必须要追求最大限度的松耦合。 (4)简单性至关重要:不可引入复杂的编程模型,必须降低开爱者开发Web应用的门 槛。 软件应用所处的运行环境会对其架构设计产生巨大影响。设计软件应用的架构,一定 要深入考虑软件所处的运行环境。脱离软件所处的运行环境来比较不同架构之间的优 劣是没有意义的。 REST这种架构风格正是为面向互联网的Web应用量身定制的。它由一组架构约束组 成 (1)客户服务器 (2)无状态 (3)缓存 (4)统一接口 (5)分层系统 (6)按需代码(可选) 这些架构约束正是互联网环境对于分布式应用架构设计所产生的外在约束。对于这些 架构约束的详细描述,读者可以参考 Fielding的博士论文的中文版。 ⅱ译者序 现在看来,REST在2000年时确实是超前的。在那个时候,DO这种架构风格占据着绝 对的统治地位。业界盛行着对于EB和DCOM的大肆炒作,而基于 SOAPWSDL的Web Services被普遍认为代表了分布式应用架构设计的未来,这几种架构无一例外都是DO 风格的。另外由于 Fielding的博士论文本身的学术性很强,在一线的Web开发者社区中 并没有引起多大的反响。开发者对于HTTP协议的设计意图存在着大量的误解,由此 导致了对于HTTP的大量低效率的误用。 这个情况一直持续到2005年Web20的崛起。那个时候,EJB、DCOM、 SOAPWSDL 这些Do风格的架构所存在的问题逐渐清晰。这些架构因为难以满足互联网环境对分 布式应用架构设计的约束,与web自身的架构风格REST相冲突,很难融入Web之中。 被寄子厚望的所谓的“Webservices”,其实除了将HTTP作为底层的传输协议外,跟 (互联网环境中的)真正的web没有什么关系。而真正的面向互联网的Web服务不应 该采用DO或者RPC风格的架构。于是,Web开发者不约而同地将目光转向了REST, 并且发起了一场运动,正本清灝地理解这种Web自身的架构风格以及HTTP协议的真 正设计意图。 这场运动受到了 Ruby on rails这个著名的Web开发框架(以下简称 Rails)的大力推 动。Rals创造者 David Heinemeier Hansson(DH)在一篇主题演讲《 Discovering a World of Resources on Rails》(《在Rail中探索资源的世界》)中,介绍了在Rais 12版中对于REST开发的支持,并且将支持REST开发作为Rail未来发展的优先目 标。虽然从理论上来说,任何支持HTTP协议的编程语言都可以用于REST开发,但 是直到Rals大力支持REST开发之后,一线的Web开发者才真正接触到了REST开发 DHH在Web开发者社区中强大的营销能力,无疑大力推动了REST开发的普及。 尽管如此,Railε所支持的REST开发却将对资源的操作局限于CRUD(创建、读 取、修改、删除)的语义(即,将对资源的CRUD操作映射到GET、POST、PUT、 DELETE四个HTTP方法),这其实是收窄了REST的适用范围。而且在Rails对于 REST开发的支持中,并没有直接支持超文本驱动( hypertext-driven)的理念,而 这是REST架构风格最核心的理念,也是RET风格的架构达到松耦合目标的根本原 因。可以这样说,Ral对于REST开发的支持方式,给Web开发者社区带来了很大的 误导。其他编程语言的Web开发框架(例如ava语言的 Struts、 Spring MVC等等)对 于REST开发的支持,大多模仿了Rail的方式,这导致了一线的Web开发者误以为 REST开发就是通过GET、POST、PUT、DELETE四个HTTP方法对资源执行CRUD操 作。甚至还有很多仅仅使用了HTTP而没有使用SOAP的Web服务API,都自称是REST 风格的API。对于什么才是真正的REST风格的误解是如此之多,而将REST作为一个 便于营销的 buzzword的挂羊头卖狗肉者也是如此之多,以至于REST的创造者 Fielding 终于忍无可忍了。2008年10月 Fielding写了一篇博文,做出了一个非常明确的断言: 译者序ⅲ REST APIs must be hypertext-driven( REST API必须是超文本驱动的)! 与2000年初次发表的那篇博士论文相比, Fielding的这篇博文在Web开发者社区中引 起了巨大的反响。Web开发者们发现自己有必要对REST做更进一步的深人理解。超 文本驱动这个理念随后变成了一个缩写词— HATEOAS,这个缩写词来自于 Fielding 的博土论文中的一句话: hypermedia as the engine of application state(将超媒体作为 应用状态的引擎)。支持 HATEOAS的REST开发框架在此后的几年中也逐渐出现。 如果按照 Fielding对于REST风格API的这个严格的定义,那么(包括 Rails所支持 的REST开发在内的)绝大多数所谓的REST风格API都不能算是真正的REST风格 API。不过实用主义的Web开发者们更倾向于将REST风格AP划分为不同的层级, 《 RESTful web Services》一书的作者 Leonard Richardson为此专门设计了一个评价 REST风格AP所处层级的成熟度模型 在Web开发者社区逐步深入实践REST开发的同时,REST这种为Web应用量身定制 的架构风格,与其他来自于Web应用的技术(HTTP、HTML、CSS、JavaScript Ajax、Atom)一起,逐渐渗透进了企业应用的领域。一些企业应用(特别是SOA) 的架构师们发现,REST架构风格所带来的可伸缩性、松耦合、简单性等等优点,对 于实现SOA的目标具有非常大的价值。在Java企业应用领域,与基于SOAP/WSDL的 传统 Web services协议栈( JAX-WS)相对应,REST风格Web服务的协议栈(JAX RS)正在逐渐成型。IBM、 Oracle(包括BEA+Sun)、 Microsoft等大公司的企业应 用产品中有很多都已经提供了REST风格的API。不过对于REST在企业应用领域的进 展,我持有谨慎乐观的态度。与REST架构风格在Web应用领域一枝独秀相比,在企 业应用领域,FEST更有可能是与DO、RPC这两种架构风格保持长期竞争的局面,它 们之间是相互补充,而不是相互取代的关系。 从以上对于历史的回顾中,我们看到:web开发者理解REST架构风格的理论并将其 应用于开发实践,有一个由浅入深的漫长过程。REST从最初用来指导HTTP1.1等 web基础协议和规范的设计,到用来指导Web浏览器、Web服务器、HTTP代理服务 器这些Web基础设施的开发,再到用来指导Web应用的架构设计,最后进入企业应用 领域,成为SOA的重要实现技术。同时,Web开发者对于使用HTTP的最佳实践,也 有一个由浅入深的过程。最终大家认识到,HTTP并不是一种传输层的“传输协议 (在国内,HTTP长期以来被错误翻译为“超文本传输协议”。我曾经试图以一己 之力来纠正这个错误),而是一种应用层的“转移协议”。HTTP有着非常丰富的语 义,它定义了一个操作服务器端资源的统一接口。而对于资源的操作,也不仅仅局限 于CRUD操作的语义,还可以通过在资源的表述中加入超链接(表达了状态迁移的话 义),以实现超文本驱动的业务协议。 N译者序 可喜的是, Fielding关于REST架构风格的这些设计思想,今天在实战层面已经开花结 果,早已不再停留在理论层面。业界出现了大量支持REST开发的开发框架、开发库 以及相关的图书。《REST实战》这本书是目前为止REST开发领域最为全面、最为 深入的著作(没有之一)。想要了解REST开发的What、Why、How(对于新知识的 通常认识过程),《REST实战》这本书就是最佳的选择。本书的三位作者,对于分 布式应用的架构设计和开发有着极为丰富的经验,除了精通Web开发技术外,他们又 都是SOA领域的专家。阅读本书是一次非常棒的体验之旅,常常会让人有击节赞叹 的快感。在本书之前,我还从未看到过一本书能够将复杂的理论概念讲解得如此深 入浅出,同时配合有大量令人信服的实战代码。与Web开发者对于REST的认识过程 样,本书对于REST的讲解也是由浅入深、循序渐进的。我曾经和本书的审校者余 晟老师说:学习这本书的过程很像是修炼“乾坤大挪移”的过程,每一个后面的章 节都代表了功法中的更高一层。悟性差的人,理解到CRUD式Web服务就满足了。而 悟性好的人,可以彻底理解超文本驱动,甚至是与REST关系密切的语义网,最终达 到REST开发的最高境界。不过即使只修炼到了较低层次,读者仍然会发现自己对于 Web应用的架构设计有了更加深入的理解,对于日常开发仍然会很有帮助。在此我郑 重建议国内所有分布式应用的开发者们都应该仔细读一下这本书,这本书对于提升分 布式应用架构设计的水平,会有非常大的帮助。 本书由李锟、俞黎敏、马钩、崔毅译,余晟审校。在此我们对余晟老师的辛勤付出表 示衷心的感谢!此外,我们还要感谢 Jim webber等三位作者写下了这本传世的杰作, 也感谢东南大学出版社给了我们翻译出版这本书的机会。 对于REST开发感兴趣,希望开展深入讨论的读者,欢迎加入我所创办的“REsT 实战讨论组:http://groups.google.com/group/rest_in_action(邮箱为restin action@googlegroups.com),也可以加入我们“REST实战讨论组”的QQ群,群号为 81207617 李锟 2011年8月6日于上海 译者序

...展开详情
试读 127P REST实战中文版
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚钱or赚积分
最新推荐
REST实战中文版 26积分/C币 立即下载
1/127
REST实战中文版第1页
REST实战中文版第2页
REST实战中文版第3页
REST实战中文版第4页
REST实战中文版第5页
REST实战中文版第6页
REST实战中文版第7页
REST实战中文版第8页
REST实战中文版第9页
REST实战中文版第10页
REST实战中文版第11页
REST实战中文版第12页
REST实战中文版第13页
REST实战中文版第14页
REST实战中文版第15页
REST实战中文版第16页
REST实战中文版第17页
REST实战中文版第18页
REST实战中文版第19页
REST实战中文版第20页

试读结束, 可继续阅读

26积分/C币 立即下载 >