Задать вопрос
  • Какой API лучше всего сделать для получения динамического списка по частям?

    @fgengine
    По страничная загрузка Offset-Limit/Page-Size
    В классическом виде хорошо работаю только на редко обновляемых данных.

    Но можно использовать примерно следующие манипуляции

    Чтобы исключить проблемы потерянных пользователей

    1 - Надо загрузить в страничном варианте с сортировкой где новый пользователь будет либо в начале списка либо в конце (например по дате присоединения к списку друзей). Минимальные данные которые потребуются для загрузки ID, и набор дат (например дата изменения профиля, дата последнего сообщения и тд). Запустить серию запросов по загрузки самих данных. Обязательно сохранить в локальную БД или кеш.

    2 - Слушать WebSocket канал (или периодический дергать REST) в который будет уведомлять о том что пользователи совершают какие либо действия (важно не получать сами данные, а регистрировать какие данные были изменены), дальше запускать серию запросов по загрузки самих данных (например добавился новый друг и нужно загрузить его профиль, написали в чат и тд), после синхронизации обновлять UI.

    3 - Выводить список пользователей из БД с нужной для приложения сортировкой.

    4 - При открытии приложения может пройти много времени с последнего момента загрузки данных или были проблемы с сетью, в этом случае просим сервер прислать список последних действий начиная от даты последней известной нам активности, и загружаем данные по активностям.

    Используя что то похожее можно получить следующие
    Плюсы:
    1 - Данные не будут загружаться только если приложение их ранее не загружало (либо когда приложение удалило слишком старые данные но пользователь захотел их заново просмотреть)
    2 - Возможность просмотреть чаты при плохом интернете
    3 - Можно совмещать WebSocket + REST

    Минусы:
    1 - Сложность разработки и сопровождений серверной части (ведение журнала активности)
    2 - Сложность разработки и сопровождений клиентской части (синхронизация локальной БД в соответствии с журналом)
    Написано