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.
This book was EXCELLENT! I loved learning how powerful the HTTP protocol is for APPLICATIONs and not just for data transport. Easy to read with examples and a great sample application, anyone that wants to design agile, powerful and open applications should be using REST and exploiting HTTP to the fullest, otherwise they will be creating needless headaches for themselves. A fantastic book!
Just reread this for work. Somewhat unsure of what is still relevant and what is obsolete though...
Book tries to proof that web is a good platform for building enterprise systems. So it examines different aspect of web such as security, performance, and scalability to show this reality. The book can help you understand the details of the HTTP and using caching in your software in right way. There is good examples and codes to show how you can use web to build enterprise systems. Book codes are based on Java and .NET.
A very good book with perfect combination of design considerations and implementation details. Different aspects of REST design are gradually introduced and explained in connection with the Richardson maturity model. Examples are especially good and show some nifty ideas and pleasant code structure.
The book was issued in 2010. All the design ideas are surely still apply. But it is nice to see the development of Web formats and protocols since that time, like evolution of RDF-related formats or consolidation of OpenID and OAuth in OpenID Connect. (for detailed insight into hypermedia formats I would recommend the "RESTful Web APIs")
The comparison of Web-Services and REST could be very useful to present REST architecture to Web-Service addicted teams.
I think it is a good book after all, but it definitely needs a second edition to accommodate all the new things going on like JSON, OAuth2, JWT, etc. Most of the examples are outdated, but still common out in the wild, but yet I really would appreciate a "contemporary" revisited edition! Besides that, the example feels kind of "straight forward", whereas in our everyday life we see edge cases that require great deal of expertise. Thereby, a set of examples would do a better job compared to Restbucks, like for example techniques or patterns to translate verb-phrase actions into resource state endpoints. Overall it is a valuable book, but then again it needs to be revisited!
I've found this immensely useful for understanding the REST principles that underpin software written for web.
The book starts by describing the levels of the Richardson Maturity Model, from tunnelling RPC calls over HTTP, to full hypermedia systems. There's quite a thorough description of the use of URIs, HTTP methods (GET, POST, PUT etc), media types, conditional requests (eg how to PUT a resource only if its ETag header indicates it has not been modified), and server response codes (far beyond simple 200, 404 and 500s). The REST tools are used to build an online machine-driven coffee ordering system (Restbucks) where the client is led through the business process by hypermedia links generated on the server.
There's a chapter on caching which completely changed my understanding of the subject: rather than being an after-the-fact optimisation, caching is fundamental to the design of HTTP systems, especially to achieve high load with only moderate latency.
The authors then continues to implement parts of the Restbucks system by using the Atom syndication and publication formats. Previously I've only used Atom to subscribe to blog feeds, but the book does a good job of showing its power as a full publishing system, with excellent hypermedia controls. This is also where they introduce the concept of media type composition: embedding one media type inside another. Here, this is embedding documents of type application/vnd.restbucks+xml inside application/atom+xml, which allows a clean separation between the two protocols and concerns. I did wonder at points if they were stretching a little too far the problem domain of Atom to model the specific Restbucks business process, but it serves as a good example of re-using a well-established protocol. The authors favour the re-use of standard protocols as this gives you access to an ecosystem of tools and libraries to inspect the resources. (The broadest example being using XHTML for resources, as then even a human being in a browser can navigate the domain application protocol.)
There's a fairly detailed look at security, using OpenID and OAuth to identify users and authorise access to third party resources. Again, the Restbucks domain is nicely extended with a third party voucher service, and the full protocol for authorisation is worked through.
The only part of the book I thought was of questionable value was on semantics (RDF, OWL etc). There weren't any compelling applications of this nor examples of systems already benefitting from them. That said, it's only a short chapter.
There are liberal code examples. Perhaps because I wasn't working through them while I was reading it, but I often found the code examples too long to follow, and I had to jump backwards and forwards a lot to keep the flow. This isn't helped a lot by the fact some examples are followed by a tedious narrative (especially the early ones) which only serve to repeat what the code said. But then, many other examples have pertinent points clearly highlighted. I'm hesitant to be too critical because creating short but realistic code examples is always hard.
Overall I'm glad I've read this. I found it a bit of an effort to get through, but I've learnt a lot, and I'll certainly be referring to this as I try to implement better web systems. The real test will be how much of the book I consider invaluable in a year's time. I highly recommended to this to any web developer, as it has either changed or massively clarified many of the things I thought I knew about the machine web.
A good book, though not particularly enjoyable to read. The material presented is good, but there's not tons of style or personality to keep you going through the 350 pages. Still, I learned a bunch and corrected some misconceptions I had about REST, so I would say it was worth my time.
The World Wide Web (WWW) and its underlying architectural style of REpresentational State Transfer (REST), is a hugely successful application platform with an unprecedented adoption scope. As such, it will come as no surprise that architects will look at this structure and attempt to distill the factors that made it so successful and apply these to similar systems. This is what REST service design attempts to do. The book “REST in Practice”, written by Jim Webber, Savas Parastatidis, and Ian Robinson finds its main purpose in this pursuit of the aforementioned success factors and apply them to other software development.
With REST (based on the doctoral work of Roy Fielding) as its weapon of choice, it seeks to position this style as a viable (and even better?) alternative for Classic SOA. In its purest essence, REST is a state machine, tracking progression within a workflow by transitioning from one state to another. This state machine has one caveat though in that it is not known in advance how many different states there are. However, it displays numerous admirable qualities such as scalability, loose coupling and functional composition across service boundaries.
This book teaches the design of proper hypermedia systems. In other words: Distributed systems that leverage the full capabilities of HTTP & Hypermedia.
In an age where every application claims to be RESTful or based on REST, this book offers a clear explanation of what "RESTful" really means, and shows how to leverage hypermedia, URIs, and the HTTP protocol to build robust distributed applications while keeping complexity at bay.
The "RESTbucks" application being explored in the book is easy to understand and does a good job of explaining the advantages of designing distributed systems this way without using too many buzzwords.
A bit long winded, however a calm walkthrough of enterprise backend systems. If you're coming from a .NET/J2EE space, this is a recommended read. I would also recommend this to aspiring systems architects.
Interesting and simple to follow. Good examples used. The single business case study helped the structure. Worth a read for anyone interested in this area.
Great book, taking us well into principles discussed by Roy Fielding and considerations for REST ful services. The approach and managing stateless considerations still handling state is wonderful.
The core concepts, I thought, were sound. And I appreciated the fact that they gave some practical guidance on .NET and Java development for both implementing and consuming applications over HTTP. But, I felt like by the middle of the book, it started to fall apart. I have a hard time believing that the future of app development is long polling atom feeds. And frankly, I didn't find their usage of atom pub particularly compelling. Their examples required a lot of squinting to agree that basing the domain application protocol they were specifying on atom made sense, and it seemed to put a lot of burden on the client of the services to get things exactly right. The security and WS-* comparisons, though, were great.
I think this book helps clear some things up, but in no way was I satisfied after reading that I knew what I was going to start doing differently in my application development.
It's a good book about REST. But it's focused mostly on the XML. So about 50% of content doesn't apply to JSON services. And I believe that high-load services should use JSON or BSON instead of XML just because they are much smaller and faster. Also it repeats the mistake made by Richardson in formulating RMM. The mistake in the way Richardson formulated RMM was to imply that systems with a higher number were inherently better. A RESTful system can be equally as crappy as an unRESTful system. The more important question is the question about the business constraints of your system and how best to meet them. REST provides a set of benefits and a set of constraints to get there. If you don't need them, you don't need REST. If they make sense, then a RESTful architecture style may be appropriate. And this book doesn't describe constraints of a REST well. But overall it worth reading it.
More practical than the paper that originally coined the term REST and the section on level of maturity was nice to read. Although I might not agree with the hypermedia classification necessarily being the highest to go for. It feels rather complicated for many applications.
Not all was well though. The book being a few years old now it was already showing its age in several sections, i.e. where it was describing Atom/AtomPub as the next best thing while it pretty much dismissed micro formats as a fad. The Java and .Net code examples were helpful sometimes, but constant reference to libraries and there deficiencies at the time of writing and on occasion rather verbose examples due to lack of use of libraries wasn't easy to read through.
In all still ok, but if you're looking for a practical REST book there may be others with more up to date material. And probably also in a lot less pages.
This 2010 book—already—dives into REST services. Following the example of the Restbucks coffee shop, it gradually touches upon various issues, such as scaling, caching, security, etc. The authors illustrate each concerns with both Java and .NET code snippets and give a glimpse about possible implementations. They finally compare "traditional" WebServices (WS-*) with REST technology highlighting the pros and cons of both sides.
I really discovered the idea of hypermedia services, REST is actually more that URI templates. I liked also the parts about caching and the use of the Atom protocol, though I felt it get a bit lengthy. I would advise to read chapters selectively: the five first ones form a good overview of REST, whereas the rest is less fragmented: one chapter on Scaling, two on Atom publishing and other side concerns such as Security or Semantic technologies.
I read this book in fits and starts, in part because I found it to dry to engage with for long spells. Since I have found most other explanations of RESTful development difficult to grasp, I have to commend this book for getting me further. Also, there is enough breadth of coverage of architectural issues that the book is a helpful reference point.
I got an enourmous amount out of chapter 7 on ATOM. There is probably two reasons for this: I derived a similar solution in ATOM some time ago for a slightly different problem, so I could immediately see how the details improved on what I achieved; I have worked a little with a client who has a similar problem
Everyone talks about REST, but only a few can explain it in a concise und understandable way as it’s done in this book. The different levels of hypermedia solutions and how their different behaviour will influence the real-world usage was an eye opener. There are many good ideas in the book to experiment with, but the ATOM feed to publish events is the one I find the most useful. The book is a must-read if you want to build software using REST as an architecture model.
I took a very long break reading this because I was sick of web services of any kind. But I have finally finished reading it and am really impressed. If you have anything you want to share with anyone on the internet, this book has examples of how to do it and good explanations of the pros and cons. Very thorough. Maybe a bit dry with the .Net & Java code samples.
great stuff, the introductory chapters, resonate with devs getting a grasp on REST. The restbucks example is a great use case for teaching various RESTful aspects of a believable system non-trivial.
Excellent introduction to REST, including not only the what and the how, but a really strong case for the why. I highly recommend this if you do web services development, even if REST is not currently on your radar.