I’m working on a project that includes writing a client for a fairly sophisticated RESTful API.
To get some better understanding of both client and server RESTful philosophy I purchased and read RESTful Web Services by Leonard Richardson, Sam Ruby (O’Reilly Media, 2008).
I tend to agree with the foreword by David Heinemeier Hansson: “Every developer working with the Web needs to read this book.”
The web is RESTful and therefor, when working with the web one shall at least understand RESTful concepts.
This book is doing a great job describing to details the concepts of addressability, statelessness, connectedness, and the uniform interface, and clarifying why they are important fundamentals of the web.
It gives a great overview of HTTP, URIs, Design of a REST server and client.
If I had to take one thing from the book, I would take the importance of state management.
It is crucial to understand where the state of the application belongs to.
Saving the application state on the back-end breaks the stateless nature of a web app, and could end up with an application that is hard to maintain and scale.
Keeping the state in the client side (or even better – in the URI), and keeping a sane, loosely coupled design leads to scalable web application.
One thing I was not very impressed with are the code examples.
I skipped most of them, since I didn’t buy this book to learn how to implement a REST server using RoR or Django, but choosing XHTML as the document format is very odd, and using a <div> or a <span> to represent semantic data is even odder.
Calling HTML5 XHTML5 is annoying, but given this was published in 2008 I given it the benefit of the doubt.
Bottom line, this was a good read and I highly recommend it.
If you are looking for a book to give you some detail oriented overview of REST concepts, this book is for you.