RESTful Web Services中文版
RESTful Web Services中文版
Leonard Richardson, Sam Ruby
出版时间:2008年05月
“所有从事Web相关开发的人员都应阅读本书。”
—— David Heinemeier Hansson,Rails框架发明人
“终于有一本书为我们制定了关于构建贴近而不是绕开Web理念的服务的路线图——这本书就是RESTful Web Services。”
—— Adam Trachtenberg,PHP作家,eBay Web服务传道者
你已经知道如何构建面向人类用户的网站,但你知道如何构建面向计算机程序的网站吗?万维网(World Wide Web)不仅仅是一个超大的分布式应用——它更是一个用于分布式计算的平台。Web服务、mashup及Ajax应用都把Web作为平台使用,而如今的Web服务技术却忽视了简单性这一Web赖以成功的重要特性,它们没有遵从Web的理念,自然也不具有Web的优势。
本书要让Web服务回归“Web”的理念。它向你展示了如何用你日常使用的技术来访问programmable web,此处的关键是REST——它是支撑Web的架构风格。本书:
* 强调Web基础技术——HTTP应用协议、URI命名标准,以及XML标记语言——的强大能力
* 介绍了面向资源的架构(Resource-Oriented Architecture,ROA),即一组用于设计REST式Web服务的原则
* 揭示了REST式设计为何比RPC式设计更简单、更具多功能性及可伸缩性
* 给出了REST式Web服务的真实案例,比如Amazon S3和Atom发布协议
* 讨论了各种流行的编程语言的Web服务客户端
* 展示了如何用三种流行的框架——Ruby on Rails、Restlet(Java)和Django(Python)——实现REST式服务
* 聚焦实际问题,比如如何设计与实现REST式Web服务及客户端
《RESTful Web Services中文版》是一本将REST设计理念应用于真实Web服务的书,它向你提供了一些成功设计所需的最佳实践,以及把设计转化为代码所需的技巧。你可以利用Web的强大能力来构建可编程应用——只要你遵从Web的理念,而不是违反它。本书向你解释了具体做法。
  1. 序 I
  2. 前言 III
  3. 第1章:Programmable Web及其分类 1
  4. Programmable Web的分类 4
  5. HTTP:信封里的文档 5
  6. 方法信息 8
  7. 作用域信息 11
  8. 相互竞争的服务架构 13
  9. Programmable Web涉及的技术 18
  10. 其他术语 20
  11. 第2章:编写Web服务客户端 23
  12. Web服务就是网站 23
  13. del.icio.us:示例应用 26
  14. 用HTTP库发送请求 29
  15. 用XML解析器处理响应 38
  16. JSON Parsers:处理序列化数据 44
  17. WADL简化客户端的编写 47
  18. 第3章:REST式服务有什么特别不同? 49
  19. 介绍Simple Storage Service 49
  20. S3的面向对象设计 50
  21. 资源 52
  22. HTTP响应代码 54
  23. 一个S3客户端 55
  24. 对请求进行签名及访问控制 64
  25. 使用S3客户端库 70
  26. 用ActiveResource创建透明的客户端 71
  27. 最后的话 77
  28. 第4章:面向资源的架构 79
  29. 面向资源的架构? 79
  30. 什么是资源? 81
  31. URIs 81
  32. 可寻址性 84
  33. 无状态性 86
  34. 表示 91
  35. 链接与连通性 94
  36. 统一接口 97
  37. 结束了! 105
  38. 第5章:设计只读的面向资源的服务 107
  39. 资源设计 108
  40. 根据需求创建只读资源 109
  41. 规划数据集 110
  42. 把数据集划分为资源 112
  43. 命名资源 117
  44. 设计表示 123
  45. 把资源相互链接起来 135
  46. HTTP响应 137
  47. 小结 140
  48. 第6章:设计可读写的面向资源的服务 143
  49. 将用户账户作为资源 144
  50. 自定义地点 157
  51. 回顾地图服务 165
  52. 第7章:一个服务实现 167
  53. 一个社会性书签Web服务 167
  54. 规划数据集 168
  55. 资源设计 171
  56. 设计来自客户端的表示 183
  57. 设计发给客户端的表示 184
  58. 把资源相互链接起来 185
  59. 会有哪些典型的事件经过? 186
  60. 可能出现哪些错误情况? 187
  61. 控制器代码 188
  62. 模型代码 205
  63. 客户端需要知道什么? 209
  64. 第8章:REST和ROA最佳实践 215
  65. 面向资源的基础 215
  66. 一般的ROA设计步骤 216
  67. 可寻址性 216
  68. 状态与无状态性 217
  69. 连通性 218
  70. 统一接口 218
  71. 一些重要方面 221
  72. 资源设计 227
  73. URI设计 233
  74. 返回的表示 234
  75. 收到的表示 234
  76. 服务的版本化 235
  77. 永久URIs vs可读的URIs 236
  78. HTTP的标准特性 237
  79. 仿造PUT和DELETE 251
  80. Cookies的问题 252
  81. 用户凭什么信任HTTP客户端? 253
  82. 第9章:服务的技术构件 259
  83. 表示格式 259
  84. 预定义的控制流 272
  85. 超媒体技术 284
  86. 第10章:面向资源的架构VS大Web服务 299
  87. 大Web服务试图解决哪些问题? 300
  88. SOAP 300
  89. WSDL 304
  90. UDDI 309
  91. 安全性 310
  92. 可靠消息传递 311
  93. 事务 312
  94. BPEL、ESB和SOA 313
  95. 小结 314
  96. 第11章:将Ajax应用作为REST客户端 315
  97. 从AJAX到Ajax 315
  98. Ajax架构 316
  99. 一个del.icio.us示例 317
  100. Ajax的优点 320
  101. Ajax的缺点 320
  102. REST更好 322
  103. 发送请求 323
  104. 处理响应 324
  105. JSON 325
  106. 不要私享REST的好处 326
  107. 跨浏览器问题和Ajax库 327
  108. 颠覆浏览器安全模型 331
  109. 第12章:REST式服务框架 339
  110. Ruby on Rails 339
  111. Restlet 343
  112. Django 354
  113. 小结 364
  114. 附录A:REST相关资源与REST式资源 365
  115. 标准与指南 365
  116. 你可以使用的服务 367
  117. 附录B:42种常见的HTTP响应代码 371
  118. 三至七种最基本的响应代码 372
  119. 1xx:通知 373
  120. 2xx:成功 374
  121. 3xx:重定向 377
  122. 4xx:客户端错误 380
  123. 5xx:服务器端错误 387
  124. 附录C:常见的HTTP报头 389
  125. 标准报头 390
  126. 非标准报头 404
  127. 索引 409
书名:RESTful Web Services中文版
出版时间:2008年05月
书号:978-0-596-52926-0
原版书出版商:O'Reilly Media
Leonard Richardson
 
Leonard Richardson, 《Ruby Cookbook》 (O’Reilly)一书的作者,曾 创建了包括Beautiful Soup在内 的多个开源代码库。
 
 
Sam Ruby
 
Sam Ruby是一位著名的软件开发者,他为Apache软件基金会的许多开源项目作出了重大贡献,另外他还通过参与Atom web feed标准及流行的Feed Validator Web服务的设计为web feeds的标准化作出了贡献。他目前就职于IBM新兴技术组(Emerging Technologies Group),任资深技术主管(Senior Technical Staff Member)。他居住在北卡罗来纳州罗利市。
Sam Ruby is a prominent software developer who has made significant contributions
to many Apache Software Foundation open source projects, and to the standardization
of web feeds via his involvement with the Atom web feed standard and the popular
Feed Validator web service. He currently holds a Senior Technical Staff Member position
in the Emerging Technologies Group of IBM. He resides in Raleigh, North
Carolina.
 
 
本书封面上的动物是一只狡猾的袋貂(P. vulpina)。袋貂(phalanger)是袋貂科动物的通称,负鼠(possum)和袋猴(cuscus)都属于袋貂科动物。(不要把澳洲负鼠与美洲负鼠混为一谈;它们虽同为有袋动物,但有很大区别。)袋貂这个词由希腊单词phalanges派生而来,它是手指或脚趾骨的意思。杂食的袋貂通过用张开手指的爪子抓地(用对生拇指)来攀登、猎捕和在树上生活。袋貂生活在澳大利亚、新西兰、塔斯马尼亚岛及一些印度尼西亚岛屿上。跟袋鼠这一最知名的有袋动物一样,雌性袋貂在幼仔出生后便把它们放在前侧的育儿袋里,让它们跟母亲形影不离。
有一个用于.NET框架的PHP编译器项目也叫袋貂(phalanger)这个名称。