Ответ
Уровни зрелости REST (Richardson Maturity Model, RMM) — это модель, оценивающая, насколько веб-API соответствует архитектурным ограничениям REST. Она включает четыре уровня, от наименее к наиболее "RESTful".
| Уровень | Название | Ключевая характеристика | Пример HTTP-запроса |
|---|---|---|---|
| 0 | Swamp of POX (Болото POX) | Использует HTTP только как транспортный протокол. Обычно один URI (например, /api) и один метод (чаще всего POST). |
POST /api с телом {"action": "getUser", "id": 123} |
| 1 | Resources (Ресурсы) | Вводит понятие отдельных ресурсов (сущностей). Разные URI для разных сущностей. | POST /users/123 (для получения данных) |
| 2 | HTTP Verbs (HTTP-глаголы) | Использует HTTP-методы (GET, POST, PUT, DELETE) по их семантике и коды состояния HTTP. |
GET /users/123 |
| 3 | Hypermedia Controls (Гипермедиа, HATEOAS) | Ответы API содержат ссылки (links) на возможные следующие действия, что делает API самоописываемым. |
GET /users/123 возвращает данные пользователя со ссылками на его заказы. |
Пример ответа уровня 3 (HATEOAS):
{
"id": 123,
"name": "John Doe",
"email": "john@example.com",
"_links": {
"self": { "href": "/users/123" },
"orders": { "href": "/users/123/orders" },
"update": { "href": "/users/123", "method": "PUT" },
"delete": { "href": "/users/123", "method": "DELETE" }
}
}
Почему это важно? Уровни 2 и 3 обеспечивают лучшую предсказуемость, кэшируемость, масштабируемость и независимость клиента от конкретной структуры URI, что является ключевой целью REST.