在我们的 Web 应用程序中,我们有一些非常慢的数据密集型 UI 页面,我们现在使用的客户端排序和过滤迫使这些页面从 API 加载所有数据(以 JSON 格式),然后执行浏览器中的操作,这通常意味着页面在准备好使用之前会冻结几秒钟。我们正在研究的解决方案是提供支持过滤和排序的服务器端分页。
对于分页,我们在 URL 中发送 pageIndex 和 pageSize 参数,它工作正常。现在对于排序(和过滤),我们正在考虑发送属性的名称以在 JSON 对象中进行排序(和过滤),该 JSON 对象可以由 API 解析以生成正确的数据查询。我在这里遇到的问题是,为了使事情尽可能简单和快速,UI 页面将必须“知道”它们想要对数据进行排序(或过滤)数据的数据列名称,这是不可取的。
例如,API 在名为“FN”的属性(在 JSON 对象中)中发送用户的名字;但是,要让 API 按名字对用户进行排序,UI 必须发送“FirstName”作为排序属性,它是我数据库中列的名称。这种方法允许我将属性的名称直接传递给我的数据层并快速完成工作。然而,UI 需要识别数据库中数据表的列名,这几乎颠覆了在层之间分离关注点的整个想法(这是我们将 Web 应用程序分解为单独的 API 和用户界面)。
有没有一种干净的方法来为服务器端分页提供过滤和排序,而不会在 UI 和后端之间创建这种依赖关系?
谢谢你。