写点什么

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

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

关注

评论

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

DLRover:蚂蚁开源大规模智能分布式训练系统

AI Infra

互联网 智能 训练智能

DLRover:蚂蚁开源大规模智能分布式训练系统

SOFAStack

人工智能 互联网 DLRover

面向新时代,海泰方圆战略升级!“1465”隆重发布!

电子信息发烧客

数据安全特点有哪些?现在企业如何保障数据安全?

行云管家

数据安全 堡垒机 数据泄露

瓴羊Quick BI真心不错,已获得官方认可!

对不起该用户已成仙‖

ChatGPT作者John Schulman:我们成功的秘密武器

OneFlow

人工智能 深度学习 ChatGPT

解密数仓高可用failover流程

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

GitLab 凭借什么连续 3 年上榜 Gartner 应用程序安全测试魔力象限?听听 GitLab 自己的分析

极狐GitLab

DevOps DevSecOps 安全测试 极狐GitLab 安全合规

及刻周边惠:拥抱HarmonyOS原子化服务

HarmonyOS开发者

HarmonyOS

汇率市场大幅波动,用友BIP全球司库助力企业外汇避险

用友BIP

金融 外汇避险

车载小程序发展现状:使用环境、用户体验、应用场景及未来趋势

没有用户名丶

小程序化

云计算生态该怎么做?阿里云计算巢打了个样

云布道师

云计算 阿里云

Java面试一个月,心态崩了……

程序知音

Java java面试 Java进阶 后端技术 Java面试八股文

【物联网开发实战】- 设备上云方案详解——设备接入类

阿里云AIoT

物联网 传感器

博睿“她”力量 :这份专业值得信赖

博睿数据

博睿数据 节日祝福

CNStack 多集群服务:基于 OCM 打造完善的集群管理能力

阿里巴巴云原生

阿里云 云原生 kubenetes 集群管理

瓴羊Quick BI更合适“中国式报表”需求!

巷子

云图说丨云数据库GaussDB(for MySQL)事务拆分大揭秘

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

设备离线时控制指令如何下发:通过设备影子实现离线设备的控制指令触达方案——设备管理运维类

阿里云AIoT

物联网

如何通过C#/VB.NET代码在Word中插入或删除脚注

在下毛毛雨

C# .net word 脚注

中小企业需要统一的快速开发平台吗?

力软低代码开发平台

什么是信创产品?怎么成为信创产品?

行云管家

信创 国产化

2023年2月国产数据库大事记-墨天轮

墨天轮

数据库 opengauss TiDB oceanbase 国产数据库

探索ChatGPT技术在文本生成、机器翻译领域的简单应用 | 社区征文

兴科Sinco

人工智能 机器翻译 OpenAPI openai ChatGPT

浪潮 KaiwuDB x 山东重工 | 打造离散制造业 IIoT 标杆解决方案

KaiwuDB

数据库 iiot 制造业

bucket表:数仓存算分离中CU与DN解绑的关键

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

defi质押LP流动性挖矿dapp系统开发详情(案例)

开发微hkkf5566

如何判断多账号是同一个人?用图技术搞定 ID Mapping

NebulaGraph

图数据库 风险控制 安全控制

ChatGPT 未来发展趋势 | 社区征文

魏铁锤

ChatGPT

IoT平台设备标签功能和规则引擎组合最佳实践——设备接入类

阿里云AIoT

sql 监控 物联网 API 定位技术

喜讯!阿里云数据库PolarDB荣获第12届PostgreSQL中国技术大会“开源数据库杰出贡献奖”

阿里云数据库开源

开源数据库 polarDB 阿里云数据库 PolarDB-PG PolarDB for PostgreSQL

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