【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

书评:《RESTful Web Services 中文版》

  • 2008-06-04
  • 本文字数:1558 字

    阅读完需:约 5 分钟

尽管 REST 在国内技术领域已算不上什么新鲜名词了,但是关于 REST 的中文资料并不多见。到目前为止,好像也就只有 Roy Thomas Fielding 博士论文的中译版。随着《RESTful Web Services 中文版》的即将面世,这种 REST 中文资料奇缺的局面有望得到改善,该书也是目前国内出版的以 REST 为主题的第一本书籍。鉴于本书的原版也才于 2007 年 5 月出版,短短一年间就推出了中文版,不得不由人感叹国内出版社的效率。此外,由于出版商 O’Reilly 一贯的口碑,本书的质量自然令人期待。

《RESTful Web Services》全书对以下 3 个问题进行了回答:

  • 什么是 RESTful 服务
  • 如何设计和实现 RESTful 服务
  • RESTful 服务的应用

什么是 RESTful 服务

这是本书前 3 章的主题。在这部分,作者从客户端的角度对 Web 服务进行了介绍,并指出了 RESTful 服务的特别之处。

在本书的第一章,《Programmable Web 及其分类》。作者将常见的 Web 服务架构分成 3 类:

  • REST 式、面向资源的架构
  • RPC 式架构
  • REST-RPC 混合架构

决定 Web 服务属于哪种分类的秘密在于以下两个问题的答案:

  1. 服务的方法信息是否出现在 HTTP 方法中?
  2. 服务的作用域信息是否出现在 URI 中?

两个极端的答案:全是和全否,分别对应 REST 式架构和 RPC 式架构。处于中间的则是 REST-RPC 混合架构。

对于 Programmable Web 一词感觉陌生的读者也不必为此介怀,这是一种按 Web 使用者分类的方式。顾名思义,Programmable Web 是指供程序使用的 Web,与之对应的另一词 Human Web,其使用者即为人类。但是严格的说,人类也是通过程序(如浏览器)来对 Web 进行浏览,因此,Human Web 实际是 Programmable Web 的特例。

本部分的其他两章分别对 Web 服务客户端的编写和 RESTful 服务特点进行了介绍,并举例说明了 REST 的一些重要概念:资源、表示、统一接口。

如何设计和实现 RESTful 服务

回答这个问题的第 4~9 章是本书的核心,而第 4 章《面向资源的架构(Resource-Oriented-Architecture,ROA)》则是该部分的核心。

提出 ROA 的目的,作者在前言中已经说得非常清楚:

我们通过制定这个面向资源的架构(ROA),把来自坊间传言(folklore)的经验提炼为 Web 服务设计的最佳实践(best practices)。

作者这样描述 ROA:

ROA 是一种把实际问题转换成 REST 式 Web 服务的方法:它令 URI、HTTP 和 XML 具有跟其他 Web 应用一样的工作方式,令人程序员们容易使用它。

在这一章中,作者介绍了 ROA 的功能组成:

  • 资源
  • 资源名称
  • 资源的表示
  • 资源间的连接

以及 ROA 的功能特性:

  • 可寻址性
  • 无状态性
  • 连通性
  • 统一接口

本部分的后续章节谈到了 ROA 的实践,分别介绍了面向资源的服务设计、服务实现、REST 和 ROA 的最佳实践,以及服务的技术构件。

RESTful 服务的应用

作为本书的最后部分,第 10~12 章以每章一个专题的形式介绍了 RESTful 服务的应用。这些专题是:

  • 面向资源架构 VS 大 Web 服务
  • 将 Ajax 作为 REST 客户端
  • REST 式服务框架

对于第 10 章《面向资源架构 VS 大 Web 服务》,你或许会感到有些奇怪:只不过是架构的比较罢了,怎么算得上是专题应用?如果你认真地读过本书的前言,应该会看出些端倪。本章所讲的内容正是“应用 REST”的前提:如何推荐 REST?

结语

作为一本平民化的 REST 书籍,本书并没有仅仅停留在对一些实际问题的解答上。理论联系实践是对本书最好的概括。围绕作者提出的 ROA,本书向读者展示了如何应用 REST 原则设计 Web 服务的方法,并试图在此之上对一些广为流传的经验教训加以总结、提升。对于目前 REST 缺乏公认最佳实践的现状,不失为一次有意义的尝试。

相信本书中文版的推出会对 REST 在国内进一步的发展起到促进作用。关于本书中文版的详细信息,请访问中文版的官方网站


博文视点还授权 InfoQ 中文站独家为大家提供额外的样章进行试读:欢迎下载第 3 章《REST 式服务有什么不同》

相关阅读用 Restlet 创建面向资源的服务

2008-06-04 19:444913
用户头像

发布了 255 篇内容, 共 54.4 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

1-3年Android开发工程师面试经验分享,程序员去大公司面试

android 面试 移动开发

异地多活知识总结

十二万伏特皮卡丘

2020-2021阿里巴巴安卓面试真题解析,2021最新版

android 面试 移动开发

Linux IPTables:如何添加防火墙规则

华为云开发者联盟

Linux 防火墙 iptables 数据包 防火墙规则

2021Android常见笔试题,字节面试官

android 面试 移动开发

浅谈函数式编程与 Stream

Dobbykim

10天拿到字节跳动安卓岗位offer,阿里内部Android应届生就业宝典

android 面试 移动开发

10天拿到阿里Android岗offer,深入剖析

android 面试 移动开发

10天拿到阿里Android岗offer,面试必知必会

android 面试 移动开发

1307页字节跳动Android面试全套真题解析火了,阿里P8大牛亲自教你

android 面试 移动开发

2019-2021历年字节跳动Android面试真题解析,字节跳动高工面试

android 面试 移动开发

10天用Flutter撸了个高仿携程App,薪资翻倍

android 面试 移动开发

2021Android岗面试题知识点小结,Android程序员必看

android 面试 移动开发

2021Android常见面试题分享,年薪50W

android 面试 移动开发

2021Android开发现状分析,爆火的Android面试题

android 面试

python学习:day3-流程控制

秦时明月

Python编程

小学生都能读懂的网络协议之:WebSocket

程序那些事

网络协议 HTTP 程序那些事 webscoket

10天拿到字节跳动Android岗位offer,【面试必会】

android 面试 移动开发

2020-2021华为Android面试真题,大厂内部资料

android 面试 移动开发

关于一场甲乙双方争议的思考

boshi

创业 项目管理

2021Android大厂面试真题,2021Android面试心得

android 面试 移动开发

10天拿到字节跳动Android岗位offer,看完跪了

android 面试 移动开发

12个View绘制流程高频面试题,膜拜大牛

android 面试 移动开发

12年高级工程师的“飞升之路”,进阶学习资料

android 面试 移动开发

2019-2021历年阿里Android面试真题,面试杀手锏

android 面试 移动开发

Groovy参数默认值在接口测试中应用

FunTester

接口测试 Groovy FunTester 参数默认值 重载

kafka集群迁移实践

小江

kafka 迁移 消息队列

1-3年Android开发工程师面试经验分享,资深大牛带你了解源码

android 面试 移动开发

详解网商银行“三地五中心”数据部署架构

博文视点Broadview

Kotlin DSL实现原理介绍

maijun

kotlin dsl

10天拿到字节跳动Android岗位offer,2021金三银四

android 面试 移动开发

书评:《RESTful Web Services中文版》_SOA_胡键_InfoQ精选文章