RESTful Web Services Cookbook 中文版

RESTful Web Services Cookbook 中文版

作者:[美] 沙布·阿拉马拉尤(Subbu Allamaraju)

出版社:电子工业

出版年:2011年9月

ISBN:9787121143908

所属分类:网络科技

书刊介绍

《RESTful Web Services Cookbook 中文版》内容简介

本书是《RESTful Web Services Cookbook》的中文翻译版。本书从实践出发,涉及设计RESTful Web服务的各个方面,通过问题描述、解决方案、问题讨论的形式在14个章节中详细讨论了统一接口、资源、表述、URI、链接、请求、缓存、安全等诸多内容。无论读者是否设计过RESTful Web服务,具体使用哪种语言,都能在阅读过程中有所收获。本书也可作为手册,根据具体问题描述在书中查找解决办法。
沙布·阿拉马拉尤(Subbu Allamaraju),是Yahoo!的架构师,曾负责开发设计RESTful Web服务的标准及实践,目前负责为某些面向开发者的平台做架构设计。在此之前,他在BEA Systems,Inc.开发Web服务及基于Java的软件,并参与制定JCP和OASIS标准。Subbu参与了4本J2EE书籍的编写,均由Wrox发行出版。想对他有更深入的了解,请访问http://www.subbu.org。

作品目录

O'Reilly
Media,Inc.介绍
推荐序
译者序
前言
第1章:使用统一接口
1.1、如何保持交互的可见性
1.2、何时需要权衡可见性
1.3、如何维护应用程序状态
1.4、如何在服务器端实现安全和幂等的方法
1.5、如何在客户端处理安全和幂等方法
1.6、何时使用GET方法
1.7、何时使用POST方法
1.8、如何使用POST方法创建资源
1.9、何时使用PUT方法创建新资源
1.10、如何使用POST方法实现异步任务
1.11、如何使用DELETE方法实现异步删除
1.12、何时使用自定义HTTP方法
1.13、何时及如何使用自定义HTTP标头
第2章:识别资源
2.1、如何从领域名词中识别资源
2.2、如何选择资源粒度
2.3、如何将资源组织为集合
2.4、何时将资源合并为复合资源
2.5、如何支持计算或处理函数
2.6、何时及如何使用控制器来操作资源
第3章:设计表述
3.1、如何使用实体头来注解表述
3.2、如何解释实体头
3.3、如何避免字符编码不匹配
3.4、如何选择表述格式和媒体类型
3.5、如何设计XML表述
3.6、如何设计JSON表述
3.7、如何设计集合表述
3.8、如何保持同构的集合
3.9、如何在表述中使用可移植的数据格式
3.10、何时使用实体标识符
3.11、如何在表述中编码二进制数据
3.12、何时以及如何提供HTML表述
3.13、如何返回错误
3.14、如何在客户端处理错误
第4章:设计URI
4.1、如何设计URI
4.2、如何将URI用做模糊标识符
4.3、如何让客户端将URI视为模糊标识符
4.4、如何保持酷的URI
第5章:Web链接
5.1、如何在XML表述中使用链接
5.2、如何在JSON表述中使用链接
5.3、何时以及如何使用链接标头
5.4、如何分配链接关系类型
5.5、如何使用链接来管理应用程序的流程
5.6、如何处理临时URI
5.7、何时以及如何使用URI模板
5.8、如何在客户端使用链接
第6章:Atom和AtomPub
6.1、如何利用Atom建模资源
6.2、何时使用Atom
6.3、如何使用AtomPub服务和分类文档
6.4、如何针对Feed和Entry资源使用AtomPub
6.5、如何使用媒体资源
第7章:内容协商
7.1、如何标明客户端偏好
7.2、如何实现媒体类型协商
7.3、如何实现语言协商
7.4、如何实现字符编码协商
7.5、如何支持压缩
7.6、何时以及如何发送Vary头
7.7、如何处理协商失败
7.8、如何使用代理驱动的内容协商
7.9、何时支持服务器驱动的协商
第8章:查询
8.1、如何针对查询设计URI
8.2、如何设计查询响应
8.3、如何支持有大量输入的查询请求
8.4、如何存储查询
第9章:Web缓存
9.1、如何设置过期缓存头
9.2、何时设置过期缓存头
9.3、何时以及如何在客户端使用过期缓存头
9.4、如何支持复合资源的缓存
9.5、如何保持新鲜且温暖的缓存
第10章:条件请求
10.1、如何生成Last-Modified和ETag头
10.2、如何在服务器端实现条件GET请求
10.3、如何从客户端提交条件
GET和
HEAD请求
10.4、如何在服务器端实现条件PUT请求
10.5、如何在服务器端实现条件DELETE请求
10.6、如何从客户端发起无条件GET请求
10.7、如何从客户端提交条件
PUT

DELETE请求
10.8、如何使POST请求条件化
10.9、如何生成一次性URI
第11章:其他内容
11.1、如何复制资源
11.2、如何合并资源
11.3、如何移动资源
11.4、何时使用WebDAV方法
11.5、如何支持跨服务器的操作
11.6、如何获取资源的快照
11.7、如何撤销资源更新
11.8、如何为部分更新提炼资源
11.9、如何使用PATCH方法
11.10、如何批量处理相似的资源
11.11、如何触发批量操作
11.12、何时使用POST来合并多个请求
11.13、如何支持批量请求
11.14、如何支持事务
第12章:安全
12.1、如何使用基本身份验证来验证客户端
12.2、如何使用摘要身份验证来验证客户端
12.3、如何使用三方OAuth
12.4、如何使用两方OAuth
12.5、如何处理URI中的敏感信息
12.6、如何维护表述的机密性与完整性
第13章:可扩展性与版本控制
13.1、如何维持URI的兼容性
13.2、如何维持XML和JSON表述的兼容性
13.3、如何扩展Atom
13.4、如何维持链接的兼容性
13.5、如何实现支持可扩展性的客户端
13.6、何时需要版本化
13.7、如何版本化RESTful
Web服务
第14章:服务发现
14.1、如何编写RESTful
Web服务的文档
14.2、如何使用OPTIONS
附录A
辅助读物
附录B
REST概述
附录C
HTTP方法
附录D
Atom
Syndication
Format
附录E
链接关系类型
关于作者
封面介绍

热门书摘

对于 RESTful Web服务,您的主要目标必定是尽最大可能保持可见性。保持可见性非常简单,使用 HTTP方法时,其语义要与 HTTP所规定的语义保持一致,并添加适当的标头来描述请求和响应。

保持可见性的另一方面是使用适当的状态码和状态消息,以便代理、缓存和客户端可以决定请求的结果。状态码是一个整数,状态消息是文本。

要让这种方法正常运作,除 POST以外的所有方法都必须是幂等的。

就算服务器保留了所有已删除资源的记录,安全策略也可能要求服务器对所有已不存在的资源返回一个404(Not Found)响应码。

在 HTTP中,除了 POST以外的所有方法都是幂等的。

资源创建之后,返回响应码201(Created),并在 Location头中包含新创建资源的 URI。

仅在客户端可以控制 URI的构成时,才使用 PUT方法创建新资源

但要把两个任务合并成单个请求时,并不能明确地将之映射到任意一个 HTTP方法上。控制器在这些情况下是最合适的。

通过 Content-Type头中的 charset参数,使用该字符编码将字符转换为实体正文中的字节

在这些 URI中,哪个最好是取决于您的软件和服务器的部署情况的。同一台服务器管理多个版本时,使用路径段或查询参数可能会比较方便。

相关推荐

微信二维码