【发布时间】:2020-05-04 08:47:51
【问题描述】:
我们必须显示一些支持分页和服务器端排序的表格数据。 它是一个 React、JAVA、SQL 堆栈。 在设计 REST API 时,我们同意返回一个复合对象,表示 桌子。该对象是由具有大量业务逻辑的复杂 SQL 创建的。 该对象包括多个对象,每个对象包括多个字段。这背后的想法是 返回一个通用对象,这样我们就不必创建请求特定的 DTO。
然而,我们只需要使用这个对象的几个字段。 UI 上显示的几列 基于此对象中的多个字段计算。 真正的挑战是当我们必须在服务器端对这些计算字段进行排序时,因为我们只获取必须在页面上显示的记录。 我们很想通过在服务器端进行计算来重构响应以匹配 UI 列,因为我们会遇到多个 DTO 问题。 如何以最好的方式实现这一目标?有没有这方面的最佳实践?我在互联网上找不到太多内容。
【问题讨论】:
-
正常的解决方法是将排序字段作为查询参数包含在内,然后服务器可以将这些字段传递给 SQL 查询(带有限制/偏移量)以根据需要处理分页。
-
这是我最初的想法。然而,计算并不是直截了当的。如果我们在前端计算字段,为了在服务器端对其进行排序,相同的计算将不得不在服务器端(SQL)上重复相同的字段
-
满足您的需求的好方法是使用 GraphQL 而不是 DTO。 graphql.org/learn/queries。这是另一个示例:graphql-java.com/tutorials/getting-started-with-spring-boot。使用这种方法,您可以在服务器端对这些计算字段进行排序,而无需多个 DTO。
标签: java sql rest sorting pagination