Разбиение на страницы в веб-приложении REST

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

В приложении REST у меня не может быть этого промежуточного результата легко - и при этом он не принадлежит клиенту, ни модели. Я считал Разбиение на страницы в веб-приложении REST, но не абсолютно ясно с ответом. Решение там, кажется, предполагает, что модель не обновляется, в то время как пользователь просматривает результаты.

Мы можем, конечно, вообразить мир (модель) как серия неизменного снимка. Путем обеспечения метки времени (или глобальный номер версии), мы затем получаем последовательное представление модели в то время, которая решает проблему с концептуальной точки зрения. Это действительно однако подразумевает полное управление версиями модели. (Я также задаюсь вопросом, существует ли соединение для рисования с функциональным программированием),

Как я должен заниматься этой проблемой?

Примечание: Я спрашиваю, потому что я планирую использовать платформу игры, которая не имеет никакого понятия состояния HTTP или сессии вообще; это чисто успокоительный.

5
задан Community 23 May 2017 в 12:30
поделиться

2 ответа

Получив результат запроса при первом поиске, вы можете сохранить результат в кеше. Для одного сервера это может быть ehcache (поддерживается в игре) или memcached (также поддерживается игрой) для кластерной среды. Вы можете сохранить результат по статическому имени + идентификатору сеанса. Таким образом, вам нужен только идентификатор сеанса для каждого запроса, он сохраняется в клиентском cookie и доступен в вашем игровом приложении. Вы можете использовать кэшированные данные для просмотра страниц. Я также рекомендую ElasticSearch.

РЕДАКТИРОВАТЬ: Лучше использовать поиск по воспроизведению http://github.com/jfp/play-search , пример:

    Query q = Search.search("object:dogs", Folder.class);
q.orderBy("object")
    .page(2,5)
    .reverse();

PS: Ваше решение с Play идеально подходит. Я профессиональный разработчик .net и могу сказать, что единственная (оптимальная) веб-платформа в мире, которая может конкурировать с asp.net mvc 2, - это платформа Play. В Grails есть ошибки, Django / Python, Yii / Php, Rails медленные, небезопасные по типу и далекие от фреймворков jvm / clr. калитка, гобелен, распорки, jsf, spring mvc - все это многословно и бесполезно. spring roo - это всего лишь генератор шаблонов. Asp.net mvc превзошел asp.net и стал платформой №1 для разработки .net, но Sun работал со старым клоном asp.net с jsf для следующего поколения, большая ошибка. На мой взгляд, единственная надежда на java - это игровой фреймворк. С модулем scala он идеален ...

5
ответ дан 14 December 2019 в 18:56
поделиться

Я немного запуталась в вашем контексте, но если мне нужно дать короткий ответ, то результаты поиска должны быть частью модели. Я предполагаю, что у вас есть модель с возможностью поиска. Что вы делаете, так это индексируете части, необходимые для поиска, и сохраняете индексную информацию (делая ее также частью модели). Когда вы выполняете поиск, вы запрашиваете индекс и отображаете результаты. Повторное выполнение поиска не приведет к появлению новых добавленных элементов, если индекс не будет регенерирован.

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

0
ответ дан 14 December 2019 в 18:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: