2015-03-02 8 views
0

При создании приложения REST, которое вернет коллекцию предметов (тема с коллекцией сообщений) с сортировкой от новой к старой.REST pagination content duplicates

Если будут выполняться принципы HATEOAS, и весь контент будет разбит на страницы, клиент получит идентификатор текущей страницы, смещение, пределы данных и ссылки на первую, текущую и следующую страницу, например.

Нет проблем с получением данных со следующей страницы, но если кто-то добавил контент, пока клиент просматривает текущую страницу - данные будут перенесены в начало сбора, а последний элемент текущей страницы будет перенесен в следующую стр.

Если вы просто пропустите сообщения, которые уже были загружены ранее, вы получите меньшее количество элементов на следующей странице. Существует способ получить количество нажатых элементов в начале списка и смещение приращения.

Что такое лучшие практики для этого?

+1

Лучшее решение, которое я нашел до сих пор: [Пример pagination на основе курсора] (http://www.sitepoint.com/paginating-real-time-data-cursor-based-pagination/) –

+0

Я думаю, что статья вы упомянули, это очень хороший пример работы с динамическими данными в упорядоченных коллекциях. Мое предпочтение заключается в использовании параметров как с/до, как описано. Насколько я помню, я думаю, что Facebook тоже делает это для своего фида. – Cleric

ответ

0

Не использовать индексы смещения, но вместо этого пропускать токены, указывающие первое значение, не включающее (или первое значение для включения), является хорошей техникой, при условии, что значение может быть уникальным для каждого элемента в вашем результирующем наборе и является упорядочиваемым полем на основе текущей сортировки. Но это не безупречно. Обычно это просто не имеет значения.

Если действительно важно, вы должны поместить идентификаторы всего, что находится на первой странице в вызове на вторую страницу, и снова и снова. HATEOAS помогает вам делать такие вещи ... но это может стать очень грязным, и все еще можно всплыть на странице 1, учитывая текущую сортировку, когда вы делаете запрос на стр. 5 ... что вы с этим делаете?

Другим трюком, чтобы избежать обмана в пользовательском интерфейсе, является использование связей «я» или «каноническая ссылка» для однозначного определения ресурсов на странице и сравнения их с существующими ресурсами в пользовательском интерфейсе. Обновление пользовательского интерфейса с последними сопоставимыми ресурсами обычно является простой задачей. Это, конечно, накладывает определенную нагрузку на клиента.

Нет версии 1, подходит всем для решения этой проблемы. Вы должны проектировать для UX, который вы намерены выполнить.