This is a book review for Packt Pub’s RESTful Java Patterns & Best Practices.
REST Services are the glue that modern day web applications are built on. Often it is easy to get carried away and design a REST endpoint in any which way you want because the HTTP protocol makes that possible. But given the fact that APIs are becoming important and that clients expect high quality REST Endpoints that implement the correct RESTful style taking all the HTTP verbs into action, it is critical that you adhere to best practices. And this is where this book fits in perfectly.
The author, Bhakti Mehta is a founding member of GlassFish Open Source Application Server and all the experience is packed into the book with patterns and best practices in various areas of RESTful Services.
The first chapter gives a quick overall review so that you are on the same ground and then the later chapters deal into each important area of RESTful API design. The areas include:
- Resource Design : This goes through URI patterns, Content Negotiation and one of my favourite topics i.e. API versioning
- Security and Traceability : This talks about the current and emerging standards when it comes to securing your endpoint. I found this section a little bit hollow on implementation details.
- Designing for Performance : This section talked about Caching, Partial Updates and designing APIs that in turn perform long-running jobs asynchronously.
- Advanced Design Principles : This section covers pagination, i18n, rate limiting and touches upon the highest form of the Richardson Maturity Model i.e. HATEOAS
There are also examples of popular public REST APIs from Twitter, Facebook, Paypal and more – so that the reader can look and relate back to the contents of the book. In that way, the book is practical to the core.
Overall, I will be keeping this book handy whenever I need to look up a particular aspect of RESTful Design and this is a great book to go through once you have deployed a few RESTFul APIs in Production and are looking to give them an extra edge.