北海市岛尚生活网络科技有限公司
首页 | 联系方式 | 加入收藏 | 设为首页 | 手机站

产品目录

联系方式

联系人:业务部
电话: 00177-685667
邮箱:service@zzlphq.com

当前位置:首页 >> 新闻中心 >> 正文

有关REST知识的阅读清单

字号:
摘要:有关REST知识的阅读清单

为 Web 设计、实现和维护 API 不仅仅是一项挑战;对很多公司来说,这是一项势在必行的任务。本系列 将带领读者走过一段旅程,从为 API 确定业务用例到设计方法论,解决实现难题,并从长远的角度看待在 Web 上维护公共 API。沿途将会有对有影响力的人物的访谈,甚至还有 API 及相关主题的推荐阅读清单。

经常有人问我,对于那些有志于学习 Web API 的设计、实现与维护的同行,有没有什么推荐的书籍?以下的这份清单中所列举的书籍,可以让读者们在最少量的阅读中学习到大量的相关主题。这些书籍也是我在学习 API 的过程中所发现的,并且其中的许多本还在书架上等我翻阅。书架上的书籍也是我在进行顾问的过程中最常参考的。

我在这里列举了两份读书清单(主要与次要)。第一份清单中的书籍直接对 HTTP、API、REST 及超媒体等技术的工作方式进行了描述。这份清单当然并不能涵盖描述了这些主题的全部书籍,但它们都是我在工作中最常使用作为参考的一部分。

第二份清单中的书籍虽然并没有直接涉及 API 的主题,但它们对于我在进行 Web 方面的设计与实现的思维方式起到了直接的影响。我已经尽力将这份清单进行简化了,虽然依然有许多书籍是我想介绍的给大家的,但我还是打算把它们放在下一次再为大家推荐。

最后,我在文章中加入了“其它资源”这一节。这些资源是我认为经受了时间的考验而仍然极为有用的,它们也不完全是以书籍的形式发布的。这些资源中的多数是博客中的文章,以及经过校对的论文等等,其中涵盖的主题或许是某个棘手的问题,或是对某些常见的实践及理论背后的概念进行论述。我经常会对这些部分保存书签,以便在需要时随手进行翻阅。

主要书籍清单

《RESTful Web Services》(2008),作者 Richardson 及 Ruby

这是一本论述本质性的书籍。这本书籍是属于最早对 HTTP API 的新增-获取-更新-删除(CRUD)风格进行描述的一批书籍之一,这一风格直到今日依然是在创建“RESTful”风格的 API 时最常用的方式。本书的编写风格非常优秀、内容也相当出众。尤其令人称道的是,作者 Leonard Richardson 及出版商O’Reilly Media 以 Creative Commons 许可的方式将本书以多种电子书形式进行免费发布。你绝对应该保留一份以作为参考。

《HTTP 开发者参考手册》(HTTP Developer’s Handbook)(2003),作者 Chris Shiflet

在我看来,这本书是一本学习 HTTP 协议、以及使用 HTTP 进行编程的绝佳的指南及参考。即使在现在,在我遇到一些 HTTP 的特殊问题及极端情况时,我还是会参考本书的内容。这本书的编写及组织形式都很不错,是我难以割舍的好书。

《RESTful Web Services 参考》(RESTful Web Services Cookbook)(2010),作者 Subbu Allamarju

这本书籍中包含了在应对现实世界中所遇到的 HTTP API 的问题时,一些非常有用且清晰的秘方。书中涵盖了设计 URI、加载,以及处理状态码等常见的内容,但我最欣赏的部分是关于支持异步操作、超长查询字符串,以及 Allamaraju 称为“HTTP 控制器”等方面的秘技。我手头上的这本书已经是我所购买的第二本,但现在也已经被我翻得破破烂烂了。

《REST 实践》(REST in Practice)(2010),作者 Webber、Parastatidis 及 Robinson

这本书的特色是它对于企业级应用的专注,也是最早介绍如何在商业应用程序中使用超媒体的书籍之一。书中所描述的“REST 巴克(RESTBucks)”咖啡店的示例广受好评。书中的示例包含了使用 C# 及 Java 进行实现的代码,它不仅对于企业级软件的开发者非常有用,对于有兴趣了解如何从头开始设计一个包含了完整功能的应用的读者来说也具有参考价值。

《使用 HTML5 及 Node 创建超媒体 API》(Building Hypermedia APIs with HTML5 and Node)(2011),作者 Amundsen

我编写此书的目的,是为了探索 Fielding 定义的 REST 架构中所提到的某个主题,那就是“超媒体即应用程序状态引擎(HATEOAS)”这部分内容的细节。这本书非常简短,涵盖了一些在 XML、JSON 及 HTML 中设计超媒体的示例。读者对我的这本书有许多下面的评价,并且经常会在互联网上、以及客户的内部材料中发现对这本书及其示例的引用。

《REST API 设计规则》(REST API Design Rule Book)(2011),作者 Mark Masse

这本书在 CRUD 风格 API 的设计模式方面是一本很好的书籍。它首先涵盖了一些基础内容,例如对单数、复数及操作进行 URI 的设计,此外还对 HTTP 方法、头、状态码等特性的规格说明进行了深入的描述。在我看来,这本书的内容似乎对于 Masse 自己定义的 WRML 格式进行了过多的依赖,不过这只是我个人的意见。

《RESTful Web APIs》(2013),作者 Richardson 及 Amundsen

这本书(简称 RWA)可以看作同样由 Richardson 及 Ruby 所编写的 RESTful Web Services (简称 RWS)这本著作的“姐妹篇”。只是 RWS 关注的是 HTTP 资源,而 RWA 则更多地关注于超媒体格式。这本书尝试着探索语义化 Web 这一庞大的主题,包括对一些基于 RDF 的格式进行了回顾,并且通过对“档案(Profiles)”的介绍,将应用程序级别的意义引入到 Web API 的范围中。与 Leonard Richardson 共同编写这本书的经历相当愉快,这本书问世后的反响也非常良好。

次要书籍清单

在我所阅读过的大量书籍中,我发现其中的一部分虽然从技术角度来说“不属于”API、HTTP 和 REST 的范畴,但对于我进行分布式应用的设计及实现依然能够提供很大的帮助。以下这些书籍是我精挑细选过的,希望它们能够将你的视野从一般的 API 书籍中拓宽到更广阔的世界。

《设计心理学》(The Design of Everyday Things)(1988-2002),作者 Donald Norman

这本书最初发布于 1988 年,它为人机交互(HCI)这一主题打下了基础,即我们所说的可用性。Norman 通过大量的示例展现了人类与设备(不仅仅是计算机)进行交互的方式,并且定义了行为生命周期(Action Lifecycle)这一概念,阐明了“可供性(Affordance)”的意义。本书还为读者提供了许多良好的建议,帮助读者进行思考:作为一个设计者,如何基于用户群、设备所使用的环境、以及你所设想的目标,进行用户界面的设计。这本书绝对是你的书架上必不可少的一本。

《寻找确定性》(In Search of Certainty)(2013),作者 Mark Burgess

Burgess 是 CFEngine 这项技术的创始人,它能够作为一个第三方的代理对大规模的基础设施进行监控。通过在这项技术上所获得的经验,他为复杂的计算机系统设计了一个免疫模型。这本书记录了他如何从一个简单的想法开始,直到设计出能够成为网络的“代理”的角色的一整套工具。我很喜欢此书的编写风格,以及其中对物理学、脑科学及通用计算科学的大量引用。全书的最后部分对于他自己的产品的描述有些偏多,但这也是可以理解的。毕竟,正是作者在 CFEngine 上的工作成果,才促成了这本书的出现。这本书能够帮助你思考,如何成功地为网络创建安全的自动化爬虫机器人。

《信息简史》(Information: A History, a Theory, a Flood)(2012),作者 James Gleick

Gleick 在 1987 年所出版的著作《混沌》(Chaos)让混沌理论广为人知,而这本书也使信息理论成为大众话题。作者讲故事的本领非常高超,在这本 300 多页的书中涵盖了大量的内容。无论是远程控制(remote drumming)还是量子计算(quantum computing),Gleick 都能够用精彩的故事与实际生活中的见解为你一一讲述。我至今仍然会随手阅读本书的某些章节,仔细体会其中的乐趣。

《信息论简介》(Information : A Very Short Introduction)(2010),作者 Luciano Floridi

这本书能够帮助你快速地理解信息论的基础。本书的起始部分为你解释了数据与信息的不同之处,随后介绍了信息论是如何与数学、物理学、生物学、经济学乃至社会伦理学产生联系的。Gleick 擅长讲述故事,而 Floridi 则擅长列举事实,并将各个学科联系在一起。以上这两本书可谓绝配。

《回忆录:超文本的演变》(Memory Machines: The Evolution of Hypertext)(2013),作者 Belinda Barnet

如果你希望了解超文本在过去(是的,半个多世纪了)50 多年间设计与演变背后的故事,那么就应该读一读这本书。Barnet 在本书中收录了她与 Ted Nelson、Douglas Englebart、Tim Berners-Lee 以及其他多位专家的访谈内容。在本书中,你将大致了解各种相互抵触的思想和市场的力量是如何将超文本/超媒体打造成我们今天所知的模样。同时,你也将了解到关于超文本的使用及实现的许多最初的设想,这些设想直到如今都还没有成为现实。

《复杂》(Complexity: A Guided Tour)(2011),作者 Melanie Mitchell

这本书是关于复杂理论方面的书籍中很容易为人接受的一本,Mitchell 为读者简单地介绍了一些复杂理论的历史,有关各种设备的遗传编程(genetic programming)理论,以及大型系统的自动机编程(automata programming)概念。书中包含了大量清晰的示例以及可运行的代码。对于任何一位有兴趣深入挖掘这一庞大主题的读者来说,这本书都会成为一本优秀的参考书。

其它资源

这里列举了一些我经常会随手翻阅及参考的论文、博客帖子及其它资源。通常在有人向我索取某些主题的示例、说明及相关背景时,我就会向他们推荐以下链接。

《架构风格与基于网络的软件架构设计》(Architectural Styles and the Design of Network-based Software Architectures)(2000),作者 Roy T. Fielding

这是一篇论文的原文,它从面世起就引起了巨大的争论(微笑)。每个进行 API 相关工作的人都应该认真地读一读这篇文章。文章本身并不长,而且也不难懂,正是这篇文章提出了 REST 这一术语。通常来说,读过这篇论文的人多数都只读了第五章:“具?