《RESTful Web Clients》中文版推荐序

一场与超媒体的未了情缘

当我在2007年前初次翻译Roy Fielding关于REST的博士论文(中文版名为《架构风格与基于网络应用软件的架构设计》)时,其实对于Web的整体架构是毫无认识的。无知者无畏,当时我仅仅是出于求知欲就开始了翻译工作。后来我发现这个挑战严重超出了我的能力范围,Fielding的博士论文是我翻译过的专业技术著作中难度最高的。后来我在2013年重新翻译了REST博士论文,力求把初次翻译时的大量问题和留下的遗憾都弥补掉,而不至于误人子弟。

REST博士论文是一座内涵丰富的宝藏,可以说是2000年前Web架构相关论文中的集大成者,其重要性不亚于Tim Berners-Lee爵士的论文。其中系统地阐述了HTTP/1.1协议背后的设计原理——REST。绝大多数不理解REST思想的Web开发者都会陷入两个误区之中:一个是将HTTP简单看作是一种传输协议(而不是应用协议),另一个是完全忽视超媒体的重要性。在2005年REST思想随着Web 2.0的兴起和迅速发展而逐渐普及之后,脱离第一个误区的Web开发者越来越多,但是能脱离第二个误区的Web开发者还是极少数。Fielding博士其实从最初就认为REST和超媒体是不可分割的,而HTTP/1.1最重要的设计目标就是更好地支持超媒体。在当时的语境中,这个超媒体自然就是HTML。因为关于超媒体的误解如此之多,所以Fielding博士在2008年写了一篇博客文章:REST APIs must be hypertext-driven!(REST API必须是超文本驱动的)。
这篇博客引起了Web开发社区的广泛讨论和反思,随后RESTful Web Services一书的作者Leonard Richardson提出了一个Richardson成熟度模型。在这个模型中将RESTful API划分了3个等级,把能够熟练应用超媒体的RESTful API列为了最高等级——第3级。然而很多年过去了,在普通Web开发者看来,这似乎仍然是一个乌托邦式的目标。有些RPC铁杆粉丝总是会拿这个来讥讽REST爱好者,把他们说成是中看不中用的API设计美学爱好者。这些传统的观点过于强大,以至于REST爱好者对于在API设计中使用超媒体也视为畏途。

当然,我们都是工程派,而不是学院派。随便给别人乱扣学院派的大帽子,是一种不尊重人的行为,也是不求甚解的体现。包括REST思想的创造者Roy Fielding也是一位如假包换的工程派。他早年为很多开源项目贡献过大量代码,还指导了大量HTTP客户端/服务器端开发团队,他的实战能力肯定在绝大多数开发者之上。REST当然并不是一种API设计美学,它更像是中庸之道,包含了设计Web应用的各种架构权衡。虽然Fielding在设计HTTP/1.1和撰写博士论文时,超媒体主要指的是HTML,但是REST是通用的理论,能支持的超媒体类别远远超出了HTML一种。在Fielding发表2008年博客文章之后,Web开发社区出现了大量新型的超媒体,而且越新出现的超媒体,越是基于JSON而非XML的,与超媒体相关的研究和开发实战非常活跃。一直很支持REST设计开发的O'Reilly出版社,也不失时机地出版了很多REST开发相关的图书,这些图书目前已经形成了一个强大的系列,包括:

  • RESTful Web Services
  • RESTful Web Services Cookbook
  • REST in Practice
  • RESTful Web APIs
  • RESTful Web Clients

另外还有很多针对某个开发平台的REST开发图书。

  • RESTful .NET
  • Building Hypermedia APIs with HTML5 and Node
  • PHP Web Services: APIs for the Modern Web

等等

在这些优秀的REST开发图书之中,涉及到了超媒体的图书最重要的有三本:

  • REST in Practice
  • RESTful Web APIs
  • RESTful Web Clients

我有幸作为REST in Practice一书的翻译负责人,赵震一负责翻译RESTful Web APIs,曾著负责翻译RESTful Web Clients。我们就像是一个接力赛的团队一样,在7年的时间里,把接力棒传递下去,终于通过这3本书,向国内的Web开发者全面展示了RESTful API和超媒体的独特魅力。

这三本书由浅入深,逐步揭开了支持超媒体的第三级RESTful API(也就是所谓的“Web API”)的神秘面纱。尤其是第三本书RESTful Web Clients,令人信服地展示了使用超媒体之后,对于API客户端代码的复用性和松耦合起到的巨大作用。除此之外这本书最重要的贡献是让超媒体变得如此平易近人,要达到这个目标其实是非常困难的。作者Mike Amundsen虽然功力深厚,然而为了保证本书的质量,足足推迟了一年时间才上市。结果不负众望,Mike为读者奉献了一本高质量的图书。连Roy Fielding在Twitter上也承认Mike Amundsen对于超媒体如何使用的理解,与REST博士论文是最接近的。相信认真阅读完本书的Web开发者,对在API设计中适当使用超媒体不会再那么犹豫。其实在API设计中适当使用超媒体,就应该像我们平时写代码时要写单元测试一样习以为常。并且熟能生巧,不断探索在API设计中使用超媒体的乐趣。

另外我还建议读者在读完RESTful Web Clients之后,再去认真读一下Mike Amundsen前一本书RESTful Web APIs,因为这两本书有很强的关联性。RESTful Web APIs虽然很棒,但是偏重于概念阐述,实战性不足,RESTful Web Clients弥补了RESTful Web APIs实战性方面的缺憾。思想的发展是有传承性的,没有几年前的RESTful Web APIs就不会有RESTful Web Clients。对于API来说,服务器端是皮,客户端是毛,皮之不存,毛将焉附?

顺便说一下,虽然现在HTTP/1.1已经升级到了HTTP/2,不过REST和超媒体的思想是完全适用的。如果熟悉HTTP/2,你会发现,其实HTTP/2的设计还是为了更好地支持超媒体(特别是HTML5),HTTP/2仍然与超媒体是紧密相关的。这再次证实了Fielding在REST博士论文中所阐述的思想,REST是Web自身的架构风格,REST就是一切优秀Web应用的灵魂,而REST自身的灵魂就是超媒体。超媒体是计算机软件领域最伟大的思想之一,它是Web取之不竭的力量源泉。

开卷有益,最后我代表国内的Web开发者感谢本书的两位译者曾著、徐必涛的辛勤工作。也感谢博文视点张春雨老师,他10年来坚持不懈支持REST开发图书出版。


Web架构师 李锟

2018年3月4日于上海

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值