Richardson Maturity Model

REST, or Representational State Transfer, is an architectural pattern for providing scalable web services that allow for change over time. Most APIs served over the web adhere to at least some parts of REST. While trying to learn more about this topic, I was searching for a coherent explanation of what exactly REST is, and the benefits of following its principles.

Martin Fowler introduces a simple way to evaluate whether your API is following basic REST principles by breaking it down into varying degrees, in what is called the Richardson Maturity Model:

  • Level 0 – HTTP is basically a RPC transport layer: a single service endpoint that can perform n number of operations
  • Level 1 – Addressable Resources: service endpoint is instead split into resources, each of which can be individually addressed
  • Level 2 – HTTP Verbs are used with proper semantics: GET for safe operations, POST for unsafe operations, each with proper response codes to indicate errors encountered
  • Level 3 – Hypermedia controls that indicate to the client what to do next: by providing resource link relations and URIs, an API can become more self-descriptive and hence less brittle to change

As Martin notes in the post, this model is just a useful tool to understand some REST basics rather than a comprehensive approach to evaluating web services.

Richardson Maturity Model

Leave a comment