RESTful Web服务到底是做什么的~

虽然REST在国内技术领域并不是一个新名词,但是中文关于REST的资料却很少。到目前为止,似乎只有罗伊·托马斯·菲尔丁博士论文的中译本。随着RESTful Web Services中文版的推出,REST中文资料匮乏的局面有望得到改善。这本书也是目前国内出版的第一本以休息为主题的书。鉴于这本书的原版是2007年5月才出版的,而中文版仅用了一年时间就推出,让人不得不感叹国内出版社的效率。此外,由于出版商奥赖利的一贯口碑,这本书的质量自然令人期待。《RESTful Web Services》一书回答了以下三个问题:什么是RESTful服务?如何设计和实现RESTful服务?什么是RESTful服务?这是本书前三章的主题。在这一部分中,作者从客户端的角度介绍了Web服务,并指出了RESTful服务的特点。在本书的第一章,可编程Web及其分类。作者将常见的Web服务架构分为三类:面向REST的架构、面向资源的架构、面向RPC的架构,而确定Web服务属于哪一类的秘密就在于对以下两个问题的回答:服务的方法信息是否出现在HTTP方法中?服务的范围信息是否出现在URI中?两个极端的答案:全是和全否,分别对应REST架构和RPC架构。中间是REST-RPC混合架构。对可编程Web这个词不熟悉的读者不必在意。这是一种对网络用户进行分类的方法。顾名思义,可编程Web是指程序使用的Web,对应的词Human Web,其用户是人类。但严格来说,人类也是通过程序(比如浏览器)来浏览网页的,所以人类网页其实是可编程网页的一个特例。这一部分的另外两章分别介绍了Web服务客户端的编写和RESTful服务的特点,并举例说明了REST的一些重要概念:资源、表示和统一接口。如何设计和实现RESTful服务是本书的核心,第4章面向资源架构(ROA)是这一部分的核心。提出ROA的目的在前言中已经说得很清楚了:我们通过制定这种面向资源的架构(ROA),将民间传说中的经验提炼到Web服务设计的最佳实践中。作者这样描述ROA:ROA是一种将实际问题转化为REST风格的Web服务的方法:它使URI、HTTP和XML像其他Web应用程序一样工作,便于程序员使用。在这一章中,作者介绍了ROA的功能组成:资源的名称、资源之间的联系以及ROA的功能特点:可寻址性、无状态连接性、统一接口。本部分后续章节讲ROA的实践,介绍面向资源的服务设计、服务实现、REST和ROA的最佳实践,以及服务的技术组件。作为本书的最后一部分,RESTful服务的应用在第10~12章以每章一个主题的形式介绍。这些主题是:面向资源的架构与大型Web服务,使用Ajax作为REST客户端的REST服务框架。对于第10章,面向资源的架构VS大Web服务,你可能会觉得有点奇怪:这只是架构的比较。怎么才能算是特殊应用呢?如果你仔细阅读这本书的序言,你应该会看到一些线索。本章讲的是“应用REST”的前提:如何推荐REST?