REST in Practice

Jim Webber, Savas Parastatidis, Ian Robinson

出版时间

2010-09-24

ISBN

9780596805821

评分

★★★★★
书籍介绍
Why don't typical enterprise projects go as smoothly as projects you develop for the Web? Does the REST architectural style really present a viable alternative for building distributed systems and enterprise-class applications? In this insightful book, three SOA experts provide a down-to-earth explanation of REST and demonstrate how you can develop simple and elegant distributed hypermedia systems by applying the Web's guiding principles to common enterprise computing problems. You'll learn techniques for implementing specific Web technologies and patterns to solve the needs of a typical company as it grows from modest beginnings to become a global enterprise. Learn basic Web techniques for application integration Use HTTP and the Web’s infrastructure to build scalable, fault-tolerant enterprise applications Discover the Create, Read, Update, Delete (CRUD) pattern for manipulating resources Build RESTful services that use hypermedia to model state transitions and describe business protocols Learn how to make Web-based solutions secure and interoperable Extend integration patterns for event-driven computing with the Atom Syndication Format and implement multi-party interactions in AtomPub Understand how the Semantic Web will impact systems design
精彩摘录
  • "每一个表述都是针对相同的底层资源的一个视图,通过Web的内容协商(content negotiation)机制在运行时进行转换格式的协商。"
  • "如果你正在寻找一本书来学习如何设计网站或者编写JavaScript应用,这本书不会给你很多帮助,尽管已经有大量有能力的Ajax开发者利用了我们的方法来建造后端的服务。 如果你在寻找建造混搭应用(mashups)或者为人们所直接使用的系统,这本书可能不是为你而写的。我们将本书的内容聚焦于机器对机器的交互。实际上,这本书的内容完全是关于一台机器如何通过web与另一台机器交互。 我们相当喜欢这种方式。"
  • "他描述了资源之间的互相影响,以及在此类系统中唯一的标识符的角色。他也讨论到了使用有限的一组操作和统一的语义来建造一种到处存在的基础架构,能够支持任何类型的应用。Fielding将这种架构风格称作“表述性状态转移(REpresentational State Transfer ,REST)”"
  • "注7: 这是一种简化。事实上,资源可以被创建,但是发出 GET 请求的客户端不需要为此负责。如果你的服务支持通过 GET 请求创建资源,为此负责的是服务本身,而不是服务的客户端!"
  • "当消费者收到包含 ETag 的响应时,它就可以(并且应该)在向这个资源发送的任何后续请求中使用这个值。 当然,消费者没有义务转发他们收到的 ETag,因此服务不要期望因为产生了 ETag,就一定能在后续请求中接收到它。 If-None-Match 主要用于条件式 GET 请求,而 If-Match 则一般用于其他的请求方法,在多位消费者相互竞争的场合中,如果没有适当的协调,将会导致难以预料的副作用。 除了 ETag 及与其相关的 If-Match,If-None-Match 头信息之外,HTTP 还支持基于时间戳的 Last-Modified 头信息及其两个相关的条件头信息:If-Modifi"
  • "超媒体系统的特征是:根据(与应用协议参与者交换的)资源表述中的链接进行转移。这些链接会对参与该应用协议的其他资源进行广告(advertise)。这些链接常常会被一些语义标记增强,以给出它们所标识的资源在领域中的含义。"
  • "在每一次交互中,服务和消费者交换的都是资源的状态表述,而不是应用的状态。被转移的表述中包括反映了应用状态的链接。这些链接会对合法的应用状态迁移进行广告。但应用状态并不显式地记录在消费者收到的表述中,而是由消费者根据所有资源的状态(很可能分布于消息者目前正在与之交互的很多个服务中)推断出来。 消费者不需要理解特定的 URI 结构,只需要理解出现的链接的语义或业务上下文。"
  • "超媒体驱动的分布式系统对其消费者提出的要求与 Web 对人类提出的要求类似,即消费者必须要发现资源并与之进行交互,从而实现应用的目标。"
用户评论
终于抓着个由头看完了。内容有点点老,比如说格式就是XML不是JSON。偏偏我要做的是个JSON的API啊……
居然木有讲JSON,唉。
REST 入门经典,可惜深入不够
看完后才发现原来这是2010年出来的书,联系到现在Web的流行程度和REST的实际应用情况,特别是对于企业级应用来说,Web是Cloud的Base,而如今的Cloud, SaaS等,也大都是在Web上。对于IT管理者来说,控制risk和cost是最重要的,而REST利用Web的先天优势,即embrace failure, design for failure and live in failure,这种技术选型的确比WS-*有很多优势,当然其对于real time和 safety critical的支持并不是很强大。
收藏