写点什么

书评:《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:445423
用户头像

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

关注

评论

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

Kubernetes 企业如何落地

CTO技术共享

开源 签约计划第三季 8月月更

用Java扩展Nginx(nginx-clojure入门实战)

程序员欣宸

Java nginx 签约计划第三季

【LeetCode】逐步求和得到正数的最小值Java题解

Albert

LeetCode 8月月更

2022秋招前端面试题(七)(附答案)

helloworld1024fd

2022秋招前端面试题(八)(附答案)

helloworld1024fd

如何快速打通镜像发布流程?

鲸品堂

镜像

Kubernetes 资源核心原理

CTO技术共享

开源 签约计划第三季 8月月更

Edge 提供了标签分组功能

HoneyMoose

数据治理(四):数据仓库数据质量管理

Lansonli

大数据 数据治理 8月月更

mysql进阶(三十一)常用命令汇总

No Silver Bullet

MySQL 常用命令 8月月更

STM32F103实现IAP在线升级应用程序

DS小龙哥

8月月更

MySQL 原理与优化,Group By 优化 技巧

老崔说架构

Discourse 的关闭主题(Close Topic )和重新开放主题

HoneyMoose

electron 应用开发优秀实践

vivo互联网技术

前端 Web Electron 桌面开发

《MySQL入门很轻松》第3章:数据库的创建与操作

乌龟哥哥

8月月更

Java基础 | Stream流原理与用法总结

Java 架构

一文看懂大数据生态圈完整知识体系

博文视点Broadview

对话跨国消费品牌DPO:数据安全合规从何做起?8.11直播见!

奇点云

数据治理 数据安全 数据合规

springboot应用查询城市天气

程序员欣宸

Java spring-boot 8月月更

OpenMLDB + Jupyter Notebook:快速搭建机器学习应用

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征工程

程序员为什么一定要用Linux?

TimeFriends

8月月更

每日一R「01」跟着大佬学 Rust

Samson

8月月更

Sass.vs.Less | 简介之基础语法

Jason199

SASS 8月月更

语音直播系统——有没有必要开展代码优化

开源直播系统源码

软件开发 直播系统 语音聊天源码 语音直播系统

StratoVirt 中的虚拟网卡是如何实现的?

openEuler

开源 openEuler Open Source 内核态 虚拟网卡

Kubernetes 实现 CI/CD 发布流程

CTO技术共享

开源 CI/CD 签约计划第三季 8月月更

C++运算符重载之加号运算符重载

CtrlX

c c++ 后端 运算符 8月月更

收到人生第一笔五位数工资

Amazing_eve

#开源

MySQL索引的B+树到底有多高?

转转技术团队

MySQL 索引

Kubernetes web网站无法访问

CTO技术共享

开源 签约计划第三季 8月月更

绝了,这套RESTful API接口设计总结

知识浅谈

8月月更

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