Я думаю, что в основном понимаю, что такое HATEOAS и почему вы должны его использовать. Однако у меня есть некоторые проблемы с применением этого к реальному сценарию.
Например:
Я хотел бы отобразить список встреч в своем клиентском приложении. Встреча состоит из даты, места и человека. Вся эта информация должна быть отображена в таблице.
Ответ моего API в настоящее время выглядит примерно так:
{
"id": 1,
"date": "2020-01-01",
"location": {
"name": "my office",
"address": "my street 22"
},
"person": {
"name": "john",
}
},
{
"id": 2,
"date": "2020-01-22",
"location": {
"name": "your office",
"address": "your street 30"
},
"person": {
"name": "peter",
}
}
Таким образом, каждый объект назначения также содержит все связанные объекты. Это делает получение данных из REST API эффективным, с моей точки зрения, поскольку мне нужен только один вызов API. Например:
api.com/appointments
С HATEOAS ответ API, вероятно, будет выглядеть примерно так:
{
"id": 1,
"date": "2020-01-01",
"location": {
"url": "api.com/location/{id}",
},
"person": {
"url": "api.com/person/{id}",
}
},
{
"id": 2,
"date": "2020-01-22",
"location": {
"url": "api.com/location/{id}",
},
"person": {
"url": "api.com/person/{id}",
}
}
Мне пришлось бы получать связанные объекты с помощью дополнительных вызовов API.
Давайте теперь предположим следующее:
Я хотел бы отобразить список из 100 встреч. Каждая встреча назначается другому человеку и в другом месте. Поэтому мне понадобится вызов API, чтобы получить все встречи, еще 100 вызовов API, чтобы получить все местоположения, и еще 100 вызовов API, чтобы получить всех людей. Всего 202 вызова API.
Мне это кажется не очень эффективным. У меня здесь ошибка или как HATEOAS будет работать в таком сценарии?