我正在为网络应用编写API。如果表格上的行超过某个值,我想对结果进行分页。但是,我也想允许客户过滤和排序结果。
我知道如何使用键集分页来正确分页数据。但是,在我看来,对结果进行排序后,键集分页就被破坏了-因为现在索引没有顺序。我不想使用极限偏移分页。
我已经读到一种实现我想要的方法是使用数据库游标。但是,我需要会议对此保持粘性。
我还考虑过将结果存储在临时表中,并为其指定一个唯一的名称,如果用户从该表中向查询数据发送相同的名称的话。问题是我必须使用一些超时来删除表,如果客户端在超时后请求下一页,可能会导致一些404错误(可能对客户端的UX不利)。
所以问题如下: 是否有一种广泛接受的方法来实现这一目标,那也是无状态的?如果没有无状态的方法,那么最可扩展的方法是什么?而且最好也不要那么凌乱。
如果有帮助,我正在使用Swift,Vapor 3(无Fluent ORM)和PostgreSQL。
最后,我是否缺少明显的东西?