写点什么

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

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

关注

评论

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

TiDB 7.5.1 资源管控测试

TiDB 社区干货传送门

性能测评 7.x 实践

探秘Kubernetes:在本地环境中玩转容器技术

SEAL安全

Kubernetes 容器 云原生 本地环境

就业寒冬,我是如何拿到5个offer的(附面试题)

霍格沃兹测试开发学社

【论文速读】| 通过间接提示注入危害现实世界中的LLM集成应用

云起无垠

吴晓波频道:基于数据飞轮更懂会员需求 提升业务价值

极客天地

云服务器几核几G配置应该怎么选择?

Finovy Cloud

服务器 云服务器

从银行资产规模看TiDB上线杭州银行核心到底意味着什么?

TiDB 社区干货传送门

数据库前沿趋势

我和 TiDB 的故事:十年理财之路之 TiDB 如何让我收益达到30万的

TiDB 社区干货传送门

新版本/特性解读

【4月20日 成都见】MySQL vs TiDB,看看如何利用分布式架构实现更简单,更可靠的应用实践!

TiDB 社区干货传送门

社区活动

标准库unsafe:带你突破golang中的类型限制

华为云开发者联盟

Go golang 开发 华为云 华为云开发者联盟

招聘严峻期我最终拿到5个Offer的一些经验分享(附面试题)

测试人

面试 软件测试

一文读懂MES和ERP的区别

万界星空科技

制造业 ERP mes 万界星空科技 生产管理软件

玩转云端|天翼云边缘安全加速平台AccessOne实用窍门之上传下载极速推进,纵享丝滑体验!

天翼云开发者社区

云计算 边缘计算 云服务 边缘安全

移动端提高pdf预览清晰度

京东科技开发者

使用云压测回放 GoReplay 录制的请求

腾讯云可观测平台

GOREPLAY

新体验、高效能,星河零代码产线加速带动产业新质生产力

飞桨PaddlePaddle

百度 BAIDU 百度飞桨 产品更新 PaddleX

殊荣双至,天翼云边缘计算再获两项大奖!

天翼云开发者社区

云计算 边缘计算 云服务 边缘安全

万界星空科技WMS仓储管理包含哪些具体内容?

万界星空科技

wms 万界星空科技 仓库管理系统

Windows自定义后台进程并设置为开机启动

GousterCloud

windows 自定义 后台进程 开机启动

【重磅干货】大模型时代,开发者云上成长指南

华为云开发者联盟

华为云 华为云GaussDB 华为云开发者联盟 华为云CodeArts 华为云盘古大模型

万界星空科技漆包线工厂生产管理软件

万界星空科技

mes 万界星空科技 漆包线mes 漆包线

通过TiOperator恢复共享存储备份数据

TiDB 社区干货传送门

迁移 集群管理 管理与运维 安装 & 部署 备份 & 恢复

TiDB 三中心"脑裂"场景探讨

TiDB 社区干货传送门

京东为openKylin新增SBOM利器,保障软件供应链安全和可追溯性!

京东科技开发者

tiup与prometheus迁移

TiDB 社区干货传送门

迁移 管理与运维

快讯!TiDB v8 发版!超硬核 v8 引擎!

TiDB 社区干货传送门

cad设计绘图Autodesk AutoCAD 2025完整版中文破解工具

Rose

AutoCAD 2025 CAD2025

解析 WebSocket 与 HTTP 协议的关键区别

Apifox

编程 程序员 网络协议 HTTP websocket

Arbitrum 为什么能领跑以太坊 Layer 2?

Footprint Analytics

blockchain Layer 2

阿里云实时计算Flink的产品化思考与实践【下】

Apache Flink

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