写点什么

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

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

关注

评论

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

带你全面认识CMMI V2.0(终)——实施落地

IPD产品研发管理

项目管理 软件 CMMI

CSS 学习笔记(一) 选择器

U2647

CSS CSS小技巧 4月日更

MySQL数据库函数、DCL详解(及备份恢复操作)

若尘

MySQL 数据库 备份 DCL

java中三种内存溢出错误的处理方法

Sakura

4月日更

工业机器视觉系统相机如何选型?

不脱发的程序猿

工业物联网 4月日更 LabVIEW 工业视觉 工业机器视觉

安卓rxjava使用,现在做Android开发有前途吗?附面试题答案

欢喜学安卓

android 程序员 面试 移动开发

【LeetCode】二叉搜索树节点最小距离Java题解

Albert

算法 LeetCode 4月日更

书单|互联网企业面试案头书之产品经理篇

博文视点Broadview

什么是自然语言处理(NLP)?

澳鹏Appen

人工智能 自然语言处理 聊天机器人 nlp 自然语言

可视化运行Python的神器Jupyter Notebook

程序那些事

Python Jupyter Notebook 程序那些事

区块链农产品防伪溯源平台,助力赣南脐橙产业发展

13828808769

区块链+ #区块链#

源中瑞区块链Baas平台--助力区块链应用落地

13530558032

GopherChina 2021 定了,干货满满的来了

谢孟军

Go 语言 GopherChina

HECO火币生态链智能合约Dapp软件系统APP开发

系统开发

区块链电子合同签署平台,区块链电子合同解决方案

13828808769

区块链+ #区块链#

区块链商品溯源平台--全流程捍卫食品安全

13530558032

如何使用iMazing将iPhone的数据迁移到iPad

懒得勤快

iphone ipad 苹果 数据迁移 数据备份

区块链结合农业产业,平台全程溯源

电微13828808271

新特性巨量来袭,MindSpore开源一周年实力“狂欢”

华为云开发者联盟

开源 modelarts mindspore 数据预处理加速 分子模拟库

Dubbo 编解码那些事

vivo互联网技术

dubbo RPC 序列化 编解码

MemVerge CEO表示基于大内存的基础架构将取代性能层级存储

Steven Xu

内存 存储 基础框架 傲腾

解读金融高频交易不出错的金手指:分布式事务管理

华为云开发者联盟

微服务 事务 华为云 数据一致性 分布式事务管理

区块链“数据上链”管理系统

电微13828808271

有了这个数据强一致“利器”,DBA们轻松修复数据对加班“say no”

华为云开发者联盟

存算分离 华为云数据库 GaussDB(for Cassandra) 强一致 开源Cassandra

聊聊LiteOS事件模块的结构体、初始化及常用操作

华为云开发者联盟

LiteOS 事件 事件结构体 事件掩码

2021金三银四面试必备?体系化带你学习:分布式进阶技术手册

比伯

Java 架构 程序人生 编程语言 技术宅

nginx性能优化--配置解析

箭上有毒

nginx 性能测试 4月日更

智慧公安重点人员管控系统搭建,重点人员管控解决方案

13828808769

智慧交通

Linux crontab 命令

一个大红包

Linux linux命令 4月日更

「免费开源」基于Vue和Quasar的前端SPA项目crudapi后台管理系统实战之docker部署(八)

crudapi

Docker Vue crud crudapi quasar

架构师训练营 模块2作业

eoeoeo

架构实战营

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