"Every developer working with the Web needs to read this book."
-- David Heinemeier Hansson, creator of the Rails framework
"RESTful Web Services finally provides a practical roadmap for constructing services that embrace the Web, instead of trying to route around it."
-- Adam Trachtenberg, PHP author and EBay Web Services Evangelist
You've built web sites that can be used by humans. But can you also build web sites that are usable by machines? That's where the future lies, and that's what RESTful Web Services shows you how to do. The World Wide Web is the most popular distributed application in history, and Web services and mashups have turned it into a powerful distributed computing platform. But today's web service technologies have lost sight of the simplicity that made the Web successful. They don't work like the Web, and they're missing out on its advantages.
This book puts the "Web" back into web services. It shows how you can connect to the programmable web with the technologies you already use every day. The key is REST, the architectural style that drives the Web. This book:
Emphasizes the power of basic Web technologies -- the HTTP application protocol, the URI naming standard, and the XML markup language
Introduces the Resource-Oriented Architecture (ROA), a common-sense set of rules for designing RESTful web services
Shows how a RESTful design is simpler, more versatile, and more scalable than a design based on Remote Procedure Calls (RPC)
Includes real-world examples of RESTful web services, like Amazon's Simple Storage Service and the Atom Publishing Protocol
Discusses web service clients for popular programming languages
Shows how to implement RESTful services in three popular frameworks -- Ruby on Rails, Restlet (for Java), and Django (for Python)
Focuses on practical issues: how to design and implement RESTful web services and clients
This is the first book that applies the REST design philosophy to real web services. It sets down the best practices you need to make your design a success, and the techniques you need to turn your design into working code. You can harness the power of the Web for programmable applications: you just have to work with the Web instead of against it. This book shows you how.
Chapter 1 The Programmable Web and Its Inhabitants
Leonard Richardson (http://www.crummy.com/) is the author of the Ruby Cookbook (O'Reilly) and of several open source libraries, including Beautiful Soup. A California native, he currently lives in New York.
Sam Ruby is a prominent software developer who has made significant contributions to the many of the Apache Software Foundation's open source projects, and to the standardization of web feeds via his involvement with the Atom web feed standard and the popular Feed Validator web service.
He currently holds a Senior Technical Staff Member position in the Emerging Technologies Group of IBM. He resides in Raleigh, North Carolina.
The animal on the cover of RESTful Web Services is a vulpine phalanger (P. vulpina). Phalanger is the general term given to animals of the Phalangeridae family, which includes possums and cuscuses. (One should not confuse the Australian possum with the American opossum; they are both marsupials, but very different.) The term phalanger is derived from the Greek word phalanges, which means finger or toe bone. The omnivorous phalanger uses its claw-fingered paws (with opposable thumbs) to climb, hunt, and live in trees. Phalangers are found in the forests of Australia, New Zealand, Tasmania, and some Indonesian islands. Like the most famous marsupial, the kangaroo, female phalangers carry their young around in a front pouch after birth.
Phalanger is also the name of a PHP complier project for the .NET framework.
The author spends much time conveying the message that REST is an architectural style, and thus there is really a spectrum to what is RESTful. The author differentiates his 'Resource Oriented Architecture' from other approaches to REST and distributed programming. His approach is not the only way, but by understanding it you are well grounded in both REST and a design approach that give you a well reasoned RESTful implementation.
The book is ahead of its time given that Microsoft, a major backer of non-RESTful SOAP, has been forced to offer a RESTful development framework that suits this book. Moreover, REST has become the predominant web service design model.
Other reviews point out that the examples are out of date, but this is not hugely important. As a Java/C#/C++ developer, I only looked for the code to back up the descriptions, and not to provide a tutorial on Ruby.
Bottom Line Yes, I would recommend this to a friend
RESTful web services is one of my favorite architecture books. It helped me learn, appreciate, and leverage the power behind http, and think about the basic components of an http request: URIs, headers, and content. Covering the tools then working through examples gives a great balance of informational and practical knowledge. It's well written, concise, and I enjoy referring back to it.
Bottom Line Yes, I would recommend this to a friend
I found this book to be both an excellent introduction to RESTful Web Services and a useful reference later on. I'd say this would have to be the best O'Reilly book I've read (and possibly the only one I've read cover to cover - in a single sitting no less!). It was incredibly useful for my work on the Open Cloud Computing Interface (OCCI) and helped to identify and resolve one or two problem areas. Looking forward to seeing what's next from these authors.
Service and delivery comments:
I bought the print version of this book at a cloud computing expo and upgraded it a few months later to the electronic version. Very happy with both.
Bottom Line Yes, I would recommend this to a friend
For a long time I've heard much about REST, RESTful etc. It sounded interesting, but vague. I've read definitions of REST on wiki, then I also read many articles about this technology, but still I wasn't able to clearly see what it's all about and how to use it. They always talked about "representations", "connectivity", etc. but it all looked too much theoretical.
Finally, I've found this book and read it from cover to cover. This was eye-opener for me. After reading this book, I finally understand what is REST, I know how to use it, I know all (or most) the gotchas and recipes, and I'm a big fan of REST. This technology is fantastic, and the book is really definitive guide to it. I recommend it to anybody who wants to start playing with REST.
From my perspective, this book has only one disadvantage: all examples are in Ruby, and I'm Java programmer, so sometimes it looked a bit cryptic to me. But of course, you can understand the general meaning of the code even if you don't know Ruby - besides, everything is described in the text anyway.
This is a very interesting and very educational book. The subject is very relevant and the authors are very knowledgeable. I hesitated a bit before ordering b/c I have read a few negative reviews stating that the content was very redundant. I think there are some chapters that could be streamlined but I appreciated the author's thoroughness and methodical approach. It is true that the REST concepts are repeated throughout the book but I think that was by design. To show conceptual consistency across technologies and applications. I also think it was done to provide a step by step practitioner's approach to REST. I found this book to be a great one-stop resource for REST and before reading it I had struggled to find clear definitions and practical examples with code online. I recommend this book to beginners and intermediate REST readers. Experienced people might not find enough "juice".
At the time of writing, this is one of the best books that makes Roy Fielding's ReST philosophy more accessible to the pragmatists - the builders on the ground.
As a Systems' architect who has to deliver business applications on a daily basis, I struggled to make sense of what exactly is ReSTful-ness...like any nascent, emergent, powerful and useful thing, ReST meant a lot of things to a lot of people. The literature on the web touched upon different manifestations but lacked the power to communicate a holistic view.
Thank goodness I landed on this EXCELLENT book that described the vision and took me through a journey of the ReSTfulness spectrum - not all supposedly ReSTful services are ReSTful. I understood the power of the human Web and now I realized how the same architecture and design will work for the data/document web; The comparing and constrasting of the ReSTfulness of flickr, del.icio.us, amazon's s3 API's was illuminating. The explanation of HTTP - how it works and how it is supposed to work and how the power could be leveraged opened up new windows and doors.
Fielding's work made more sense now. The foundational principles were getting clearer and clearer.
It became ( and still is) a reference book. Its a book I carry everywhere. I "steal" time to re-read some of what is being said whenever I get time.
Yes, there are a few things that could be improved. But who cares? When you find water in a desert, do you stop to whine about a few sand particles? This book's strengths outnumber the weaknesses many times over.
Because of this book, I feel that I can inspire my team to build a scale-free application that unifies the enterprise just like the larger web did. At last I have found the unifying vision that will save me from re-inventing plumbing. I can now move on to focus on the business architecture. No more plumbing - the customer is waiting!
To the other ignorant reviewers who did/do not get this seminal work, please delay publishing your ignorance for a few more years...and save yourself the ignominy of having commented on something you have little understanding of.
I tried to read this book but my experience was frustrating. Very often I feel annoyed by the author's blahing. No doubt there are shining points in this book, but they are buried in overwhelming nonsenses. This book doesn't worth reading, it's wast e of time. Just find some short articles, and enjoy the true technology.
This is the kind of book that I love O'Reily for. Richardson and Ruby have taken what can be and too often is treated as an arcane subject, and pulled out the core concepts.
The book should be read in the abstract. I have never coded with Ruby or Rails, but that is not the point. The authors distill just what is HTTP and how it works, and lay out, using the basic built-in functionality of http, how you can create intelligent and useful web services and clients. And what do you know - coding with the http protocol in mind naturally results in your writing ReSTful applications. This is what sticks in my head about this book, just that simple concept.
This book really takes you to the core of how the web works - sending http requests and getting http responses. That is it, nothing more. Now many frameworks exist to add functionality to this basic request/response pattern. But until you understand the core concepts, you will never really know how to code for the web. And advanced frameworks often make matters worse by hiding what is really going on so much that developers can spend days learning the framework and missing what is fundamentally going on.
In my opinion, ReSTful web services is a nice application of core http, a good way to illustrate how the web works, and how to work with the web, instead of against it. A book solely dedicated to http would likely get bogged down in unused standards and technical detail.
But this book really nails down what programming on the web means, and how to write well-behaved applications. While I may never code in Ruby, or make a web client to interface with flickr, what I learned in this book will serve as a foundation for all of my future web work. And I am deeply grateful for that.
I started this book with much anticipation. It starts out very well with small working examples for accessing non-RESTful websites. As soon as it got into RESTful designs with Ruby, things fell apart. All the examples are for Rails 1.2. The current version is 2.0 and it is significantly different in this area. I have now spent several days trying to educate myself on the difference so I could fix the examples.
In addition there are a couple laborious chapters where the author takes you through the design philosophy of a RESTful design. Although this was good, the chapters could have been made shorter.
I believe that this book should be required reading for anyone who works on anything related to the Web. For the first time, this book makes a clear how using the simple built-in technology of the web, web sites can be both human and machine readable. And that most of the agony of convoluted API's are completely unnecessary. Thanks to the writers for taking the brilliance of Roy Thomas Fielding's original dissertation and creating an insightful and approachable book with concrete examples.