Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

RMM (Richardson Maturity Model)

The Richardson Maturity Model is a method used to rank API design according to the
principles of Representational State Transfer (REST). It was introduced by Leonard
Richardson and is widely referenced in the context of building RESTful web services.
Consider remote web servers as huge repositories of data. Client applications can access them
via APIs. It could be public data such as weather forecasts, stock prices, or sports updates.
Data could be private such as company-specific business information that's accessible to
employees, vendors or partners.
REST (REpresentational State Transfer) is a popular architectural style for designing web
services to fetch or alter remote data. APIs conforming to the REST framework are
considered more mature because they offer ease, flexibility and interoperability. Richardson
Maturity Model (RMM) is a four-level scale that indicates extent of API conformity to the
REST framework.
The maturity of a service is based on three factors in this model: URI, HTTP Methods
and HATEOAS (Hypermedia). If a service employs these technologies, it’s considered more
mature. This model covers only API architectural style, not data modeling or other design
factors.
Richardson Maturity Model's levels: Richardson Maturity Model (devopedia.org)

Level 0: The Swamp of POX


At this level, an API doesn't really adhere to REST principles at all. It typically uses HTTP as
a transport system for remote interactions but without using any of the features that REST
provides.
POX stands for "Plain Old XML," which indicates that communication is done by sending
and receiving XML or any other type of data over HTTP.

Level 1: Resources
Level 1 introduces the concept of 'resources,' which are key to RESTful services.
The API is designed to handle individual resources, such as users, orders, or products.
Each resource has a specific URL, but HTTP methods are not fully leveraged.
Level 2: HTTP Verbs
This level makes use of HTTP verbs (GET, POST, PUT, DELETE, etc.) to perform different
operations on the resources.
This allows for a more meaningful interaction with the API, with verbs corresponding to
create, read, update, and delete (CRUD) operations.

Level 3: Hypermedia Controls (HATEOAS)


HATEOAS stands for Hypermedia as the Engine of Application State.
At this level, the API provides information dynamically through hypermedia, meaning that
the available actions are provided to the client through hyperlinks included in the responses.
This allows clients to dynamically navigate the API by following links, much like browsing
the web.
The Richardson Maturity Model serves as a tool to gauge how well an API conforms to
REST principles rather than a strict set of rules to follow. The higher the level, the more
RESTful the API is considered to be. However, not all APIs need to reach Level 3 to be
effective, and the level to aim for often depends on the specific needs of the application.

You might also like