Gymterview
middle

Что такое Richardson Maturity Model?

Richardson Maturity Model (Модель зрелости Ричардсона) — модель, описывающая четыре уровня зрелости REST API, предложенная Леонардом Ричардсоном.

Уровень Название Описание
0 «Болото POX» (The Swamp of POX) Один URI, один HTTP-метод (обычно POST). Фактически RPC через HTTP
1 Ресурсы (Resources) Каждый ресурс имеет собственный URI, но используется один метод
2 HTTP-глаголы (HTTP Verbs) Используются правильные HTTP-методы и коды ответов
3 HATEOAS (Hypermedia Controls) Ответы содержат гиперссылки на доступные действия и связанные ресурсы

Примеры каждого уровня

Уровень 0 — RPC через HTTP:

Пример
POST /api HTTP/1.1
{"action": "getUser", "userId": 42}

Уровень 1 — Ресурсы:

Пример
POST /api/users/42
{"action": "get"}

Уровень 2 — HTTP-глаголы (большинство современных API):

Пример
GET    /api/users/42    → 200 OK
POST   /api/users       → 201 Created
DELETE /api/users/42    → 204 No Content

Уровень 3 — HATEOAS:

Пример
{
  "id": 42,
  "name": "Иван",
  "_links": {
    "self": {"href": "/api/users/42"},
    "orders": {"href": "/api/users/42/orders"},
    "delete": {"href": "/api/users/42", "method": "DELETE"}
  }
}

Согласно Рою Филдингу, только API уровня 3 по-настоящему является RESTful. Однако на практике большинство API реализуют уровень 2, что считается приемлемым.

На собеседовании: нужно перечислить все четыре уровня с краткими примерами. Частая ошибка — не знать, что большинство реальных API находятся на уровне 2, или не упомянуть, что уровень 3 (HATEOAS) — теоретический идеал.