RESTful Service Design: Patterns and Anti-Patterns

04:30 PM - 05:25 PM on July 17, 2016, Room CR5

Jeff Revesz

Audience level:


Drawing on more than a decade of combined experience in RESTful service design, your speakers will discuss many of the key architectural questions that every API developer needs to answer. The goal of this talk is to move quickly beyond the basics, and explore larger questions of how to build a sane and scalable service that your users will love. We will draw on our own experience of implementing bad (and later, less-bad) answers to these questions in multiple real-world situations, with specific examples demonstrated using Django REST Framework.


It's well understood that REST (Representational State Transfer) is one of the most widely-used service design patterns on the modern web. Since the strict definition of REST contains only a minimal number of core constraints, it provides a tremendous amount of flexibility to the developer. Two different services may have vastly different request and response patterns, and yet both could still be considered legitimately RESTful.

This flexibility is a contributing factor to the popularity of REST, but it requires the developer to make many key decisions at the outset. What types of filters will you support, and how will you implement them? Do you opt for smaller responses which require a greater number of client requests, or the opposite? What is the best way to chain endpoints together so your users can explore your data model? Will you support Remote Procedure Calls? If so, how can that be done RESTfully?

The answers to these questions (and more) are crucial, since each one implies a major architectural decision that may prove extremely difficult to reverse later on. In this talk, the speakers will draw on their experience as API architects to discuss the many answers to these questions that they have implemented in real-world situations. Attention will be drawn to hastily-implemented solutions that have backfired in terrible ways, and the lessons learned from those experiences.