如何正确过滤 Spring REST 数据
How to properly filter Spring REST data
我有一个 Spring 数据 REST 服务,只有一个 @Entity 和存储库。当我运行
$curl localhost:8080/api
我将所有数据存储在我的存储库中,并且按预期工作。我还有一个小型 React 前端,我在那里显示该数据。
我的问题是:我应该在哪里筛选数据?例如,也许我想要所有 ID > 10 的条目。我应该只在前端过滤响应,还是应该以 returns 只需要所需条目的方式进行 REST 调用?
如果我应该做后者,那该怎么做?
谢谢。
如果总是这样,你为什么要把额外的负担放在front-end
肩上一直过滤结果?
实施一个新方法,该方法returns 所需的结果(例如 id > 10)并用 @Query
注释并在其中提供 JPQL
或 native query
@Query("SELECT c FROM Customer c WHERE c.id > 10")
Collection<Customer> findAllActiveCustomers();
但是,如果您选择本机查询,请不要忘记将 nativeQuery = true
放入 @Query
在后端过滤,或者 - 更具体地说 - 使用数据库查询。
数据库针对这些操作进行了优化。这样就可以减少从后端传输到前端的数据,减少前端的负载,因为只有用户请求的数据才会被前端处理。
另一个好处是,如果您有多个前端(例如网站和移动应用程序),则只需(在后端)而不是两次(在每个客户端)实现过滤器功能
我有一个 Spring 数据 REST 服务,只有一个 @Entity 和存储库。当我运行
$curl localhost:8080/api
我将所有数据存储在我的存储库中,并且按预期工作。我还有一个小型 React 前端,我在那里显示该数据。
我的问题是:我应该在哪里筛选数据?例如,也许我想要所有 ID > 10 的条目。我应该只在前端过滤响应,还是应该以 returns 只需要所需条目的方式进行 REST 调用?
如果我应该做后者,那该怎么做?
谢谢。
如果总是这样,你为什么要把额外的负担放在front-end
肩上一直过滤结果?
实施一个新方法,该方法returns 所需的结果(例如 id > 10)并用 @Query
注释并在其中提供 JPQL
或 native query
@Query("SELECT c FROM Customer c WHERE c.id > 10")
Collection<Customer> findAllActiveCustomers();
但是,如果您选择本机查询,请不要忘记将 nativeQuery = true
放入 @Query
在后端过滤,或者 - 更具体地说 - 使用数据库查询。
数据库针对这些操作进行了优化。这样就可以减少从后端传输到前端的数据,减少前端的负载,因为只有用户请求的数据才会被前端处理。
另一个好处是,如果您有多个前端(例如网站和移动应用程序),则只需(在后端)而不是两次(在每个客户端)实现过滤器功能