Перейти к содержимому
Опубликовано

Передушни душнилу: что отвечать на собседовании, когда спрашивают про HATEOAS

Автор
  • Имя
    Максим | Системный анализ
    Telegram

Кратко

Передушни душнилу: что отвечать на собседовании, когда спрашивают про HATEOASHATEOAS (Hypermedia As The Engine Of Application State) - это один из...

Передушни душнилу: что отвечать на собседовании, когда спрашивают про HATEOAS

HATEOAS (Hypermedia As The Engine Of Application State) - это один из принципов REST. Если API его соблюдает, оно находится на третьем, самом высоком уровне пирамиды Ричардсона

Принцип заключается в том, чтобы сервер в ответе на запрос возвращал не только сущность, но и доступные с ней действия. Например:

Без HATEOAS
GET /accounts/12345
{
"account_number": "12345",
"balance": 100.00
}

Клиент получает только данные. Чтобы пополнить счёт, клиент должен заранее знать URL: /accounts/12345/deposit. Если URL изменится, клиент сломается.

С HATEOAS
GET /accounts/12345
{
"account_number": "12345",
"balance": 100.00,
"_links": {
"deposit": { "href": "/accounts/12345/deposit", "method": "POST" },
"withdraw": { "href": "/accounts/12345/withdraw", "method": "POST" },
"transfer": { "href": "/accounts/12345/transfer", "method": "POST" },
"close": { "href": "/accounts/12345/close", "method": "DELETE" }
}
}

Теперь клиент видит, какие действия доступны, и может их выполнить, перейдя по ссылкам из ответа.

Динамическое изменение состояния HATEOAS Если баланс стал отрицательным:

GET /accounts/12345
{
"account_number": "12345",
"balance": -25.00,
"_links": {
"deposit": { "href": "/accounts/12345/deposit", "method": "POST" }
}
}

Т.е. сервер сам решает, какие действия доступны в текущем состоянии. Снятие, перевод и закрытие стали недоступны: осталось только пополнение.

‼️ Несмотря на то, что HATEOAS редко используется в реальных проектах, про него любят спрашивать на собеседованиях.

От аналитика ожидают услышать следующие плюсы: Слабая связанность между клиентом и сервером Самоописываемость API

При этом реализация HATEOAS приносит довольно много проблем: Увеличение размера ответа Увеличение количества запросов для сложных сайтов Значительное увеличение бюджета на разработку @maximbelovmentor

Максим | Системный анализ
349 подписчиков
82 поста
Как войти в IT через системный анализ и получить оффер от 270к+. Опыт Senior аналитика из топ-банков. Разборы, практика, собесы, техника мышления аналитика. Бесплатная консультация - в закрепе.