Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Node.js: REST, Richardson Maturity Model, API design, HATEOAS, hypermedia

Что такое модель зрелости REST по Ричардсону?

Вопрос проверяет понимание модели зрелости REST по Ричардсону, которая описывает эволюцию веб-сервисов от простых RPC-подобных систем до полноценных RESTful API, и нужен для оценки глубины знаний кандидата в области проектирования API.

Короткий ответ

Модель зрелости REST по Ричардсону — это концепция, предложенная Леонардом Ричардсоном, которая описывает четыре уровня соответствия веб-сервисов принципам REST. Уровень 0: использование HTTP как транспортного протокола для RPC-вызовов. Уровень 1: введение ресурсов с уникальными URI. Уровень 2: правильное использование HTTP-методов (GET, POST и т.д.) и кодов состояния. Уровень 3: применение гипермедиа (HATEOAS), когда ответы API содержат ссылки на возможные следующие действия. Эта модель помогает оценить и улучшить дизайн API.

Длинный ответ

Модель зрелости REST по Ричардсону — это элегантный способ оценить, насколько веб-сервис соответствует архитектурному стилю REST. Она разбивает путь к "истинному REST" на четыре уровня, от самого простого до наиболее полного. Понимание этих уровней помогает разработчикам проектировать более согласованные, масштабируемые и удобные в использовании API.

Уровень 0: The Swamp of POX (Болото POX)

На этом уровне HTTP используется просто как транспортный протокол для вызовов удаленных процедур (RPC). Весь сервис часто работает через одну конечную точку (endpoint), например, /api, а все действия определяются в теле запроса (обычно через SOAP или простой XML/JSON). Это не REST, а просто использование HTTP как туннеля.

// Пример запроса (RPC-стиль)
POST /api/gateway HTTP/1.1
Content-Type: application/json
{
  "method": "getUser",
  "params": { "userId": 123 }
}

Уровень 1: Ресурсы (Resources)

Ключевой шаг — введение понятия ресурсов. Вместо одной точки входа для всех операций, у каждого значимого объекта или сущности есть свой уникальный URI. Например, для работы с пользователями используется /users, а для конкретного пользователя — /users/123. Это улучшает структуру и понятность API.

// Запрос к конкретному ресурсу
GET /users/123 HTTP/1.1
// Вместо старого стиля: POST /api { "method": "getUser", ... }

Уровень 2: HTTP-глаголы (HTTP Verbs)

На этом уровне начинается правильное использование возможностей протокола HTTP. Для разных операций над ресурсами применяются соответствующие HTTP-методы: GET для получения, POST для создания, PUT для полного обновления, PATCH для частичного, DELETE для удаления. Также важно возвращать семантически правильные HTTP-коды состояния (200 OK, 201 Created, 404 Not Found и т.д.). Это делает API самодокументируемым и предсказуемым.

// Примеры использования разных методов
GET /users/123          // Получить пользователя
PUT /users/123          // Обновить пользователя
DELETE /users/123       // Удалить пользователя
POST /users             // Создать нового пользователя

Уровень 3: Гипермедиа (Hypermedia Controls, HATEOAS)

Высший уровень зрелости, который реализует принцип HATEOAS (Hypermedia as the Engine of Application State). Ответы API не только содержат данные, но и ссылки (hypermedia links) на возможные следующие действия, связанные с текущим ресурсом. Клиент "переходит" по приложению, следуя этим ссылкам, а не жестко программируя URL-адреса. Это обеспечивает слабую связность и позволяет серверу гибко менять структуру URI без поломки клиентов.

// Пример ответа с гипермедиа-ссылками (HATEOAS)
{
  "user": {
    "id": 123,
    "name": "Alice",
    "email": "alice@example.com"
  },
  "_links": {
    "self": { "href": "/users/123" },
    "orders": { "href": "/users/123/orders" },
    "update": { "href": "/users/123", "method": "PUT" },
    "delete": { "href": "/users/123", "method": "DELETE" }
  }
}

Модель Ричардсона — это не строгий стандарт, а руководство. На практике многие успешные публичные API останавливаются на уровне 2, так как реализация полноценного HATEOAS (уровень 3) может быть сложной и не всегда необходимой. Однако понимание всех уровней критически важно для осознанного проектирования.

Вывод: Модель зрелости REST по Ричардсону — это полезный инструмент для оценки и проектирования API. Уровни 1 и 2 (ресурсы и HTTP-глаголы) являются практически обязательными для создания качественного RESTful API. Уровень 3 (HATEOAS) стоит применять в системах, где важна максимальная гибкость, слабая связность клиента и сервера, или когда API должно быть самоописываемым, как, например, в сложных микросервисных архитектурах.

Уровень

  • Рейтинг:

    3

  • Сложность:

    5

Навыки

  • Node.js

    Node.js

  • Express

Ключевые слова

#REST

#Richardson Maturity Model

#API design

#HATEOAS

#hypermedia

Подпишись на Java Developer в телеграм