gpt4 book ai didi

java - REST 网络应用程序中的分页

转载 作者:搜寻专家 更新时间:2023-10-31 20:07:11 25 4
gpt4 key购买 nike

通常,用户进行搜索,得到一个命中列表,然后可以浏览它。命中列表是在整个浏览过程中保持一致的中间结果,通常存储在 session 状态中。例如。如果其他人同时添加了新项目,它们只会出现在后续搜索中。

在 REST 应用程序中,我无法轻易获得此中间结果——它既不属于客户端,也不属于模型。我读过Pagination in a REST web app ,但我对答案并不完全清楚。那里的解决方案似乎假设在用户浏览结果时模型没有更新。

我们当然可以将世界(模型)想象成一系列不可变的快照。通过提供时间戳(或全局版本号),我们可以当时获得模型的一致 View ,这从概念的角度解决了问题。然而,它确实意味着模型的完整版本控制。 (我也在想画画和函数式编程有没有联系)

我该如何处理这个问题?

注意:我问是因为我打算使用 play framework ,它根本没有 HTTP 状态或 session 的概念;这是纯粹的 Restful 。

最佳答案

在第一次搜索得到查询结果后,您可以将结果保存在缓存中。对于一台服务器,它可以是集群环境的 ehcache(play 支持)或 memcached(play 也支持)。您可以通过静态名称 + session ID 保存结果。所以你只需要每个请求的 session ID,它保存在客户端 cookie 中并在你的 play 应用程序中可用。您可以使用缓存数据来浏览页面。我还推荐 ElasticSearch。

编辑:更好的方法是使用 Play 搜索 http://github.com/jfp/play-search , sample :

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

PS:您对 Play 的决定是完美的。我是一名专业的 .net 开发人员,我可以说世界上唯一可以与 asp.net mvc 2 竞争的(最佳)Web 框架是 Play 框架。 Grails 有很多问题,Django/Python、Yii/Php、Rails 都很慢,类型不安全并且远离 jvm/clr 框架。 wicket、tapestry、struts、jsf、spring mvc 都是冗长且无用的。 spring roo 只是一个模板生成器。 Asp.net mvc 超越了 asp.net 并成为 .net 的第一大开发平台,但是 sun 为下一代的 jsf 开发了一个旧的 asp.net 克隆,这是一个大错误。在我看来,java 的唯一希望就是 play framework。配合scala模块,完美...

关于java - REST 网络应用程序中的分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3178368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com