Hardresthateoas

Что такое HATEOAS?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

HATEOAS (Hypermedia As The Engine Of Application State) — принцип REST: сервер вместе с данными возвращает hyperlinks на доступные дальнейшие действия. Клиент «навигирует» по ссылкам, не зная URL'ы заранее.

GET /orders/123
{
  "id": 123,
  "status": "paid",
  "_links": {
    "self":   { "href": "/orders/123" },
    "cancel": { "href": "/orders/123/cancel" },
    "refund": { "href": "/orders/123/refund" }
  }
}
// Spring HATEOAS
EntityModel<Order> model = EntityModel.of(order);
model.add(linkTo(methodOn(OrderController.class).cancel(order.id())).withRel("cancel"));
  • Клиент видит доступные действия по presence ссылок; статус изменился → другие ссылки;
  • Level 3 в Richardson Maturity Model;
  • На практике редко используется в full, чаще REST level 2 (HTTP verbs + resources);
  • GraphQL — другой подход; OpenAPI/Swagger — документация вместо hyperlinks.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.