Silentland
Новичок
Одностраничное приложение.
Обрабатываем переход по адресу: site.ru/spb/museums/best
1. Получаем объект города api.site.ru?city=spb, берем из него cityId: 123
2. Получаем объект категории api.site.ru?categories=museums, берем из него categoriesId: 456
3. Получаем список лучших музеев Питера api.site.ru/museums?city=123&categories=456&type=best
В итоге имеем парочку транзитных запросов, которые усложняют код фронтэнда и замедляют ответ.
С одной стороны, можно получать сразу при загрузке список всех городов, категорий и проч., но если списки будут большими, то это может затормозить первую загрузку.
Можно хранить урезанные списки соответствий url — id, что отсрочит первую проблему, но усложнит бэкенд и фронтенд.
Можно придумать какую-нибудь штуку на фронтенде, которая будет в фоне подгружать списки городов и категорий и откладывать выполнение задач, которым требуются данные из них, если они еще не загружены. Это сильно усложнит фронтенд.
Можно переделать бэкенд, чтобы он понимал запросы вида api.site.ru/museums?city=spb&categories=museums&type=best, но тогда придется постоянно делать запросы по нескольким таблицам и возрастет нагрузка на сервер, чего очень не хочется.
Какие еще есть варианты? Как бы вы сделали? Как сделать правильно?
Обрабатываем переход по адресу: site.ru/spb/museums/best
1. Получаем объект города api.site.ru?city=spb, берем из него cityId: 123
2. Получаем объект категории api.site.ru?categories=museums, берем из него categoriesId: 456
3. Получаем список лучших музеев Питера api.site.ru/museums?city=123&categories=456&type=best
В итоге имеем парочку транзитных запросов, которые усложняют код фронтэнда и замедляют ответ.
С одной стороны, можно получать сразу при загрузке список всех городов, категорий и проч., но если списки будут большими, то это может затормозить первую загрузку.
Можно хранить урезанные списки соответствий url — id, что отсрочит первую проблему, но усложнит бэкенд и фронтенд.
Можно придумать какую-нибудь штуку на фронтенде, которая будет в фоне подгружать списки городов и категорий и откладывать выполнение задач, которым требуются данные из них, если они еще не загружены. Это сильно усложнит фронтенд.
Можно переделать бэкенд, чтобы он понимал запросы вида api.site.ru/museums?city=spb&categories=museums&type=best, но тогда придется постоянно делать запросы по нескольким таблицам и возрастет нагрузка на сервер, чего очень не хочется.
Какие еще есть варианты? Как бы вы сделали? Как сделать правильно?