- Опубликовано
Передушни душнилу: что отвечать на собседовании, когда спрашивают про HATEOAS
- Автор
- Имя
- Максим | Системный анализ
- Telegram
- Максим | Системный анализ349 подписчиков82 постаКак войти в IT через системный анализ и получить оффер от 270к+. Опыт Senior аналитика из топ-банков. Разборы, практика, собесы, техника мышления аналитика. Бесплатная консультация - в закрепе.
Кратко
Передушни душнилу: что отвечать на собседовании, когда спрашивают про HATEOASHATEOAS (Hypermedia As The Engine Of Application State) - это один из...
Передушни душнилу: что отвечать на собседовании, когда спрашивают про HATEOAS
HATEOAS (Hypermedia As The Engine Of Application State) - это один из принципов REST. Если API его соблюдает, оно находится на третьем, самом высоком уровне пирамиды Ричардсона
Принцип заключается в том, чтобы сервер в ответе на запрос возвращал не только сущность, но и доступные с ней действия. Например:
GET /accounts/12345
{
"account_number": "12345",
"balance": 100.00
}
Клиент получает только данные. Чтобы пополнить счёт, клиент должен заранее знать URL: /accounts/12345/deposit. Если URL изменится, клиент сломается.
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








