我应该过滤后端或前端的数据吗?

时间:2017-10-24 09:42:46

标签: reactjs rest spring-boot redux

我有一个用Spring构建的Web服务,我的视图是用React构建的,我使用Redux进行状态管理。

假设我的API有一个端点/api/products,我已经实现了搜索功能,它从所有产品中提取所有产品,将它们存储在Redux存储中并显示它们。现在我想实现排序功能,我有两个实现它的想法:

  1. 修改我的api端点/api/products以获取参数。例如/api/products?sortBy=price(UI中的逻辑较少,网络请求较多)

  2. 使用我在商店中存储的产品。 (网络请求越少,UI中的逻辑越多)

  3. 其中哪一个(如果有的话)将被视为最佳做法?

3 个答案:

答案 0 :(得分:3)

这取决于

  • 可接受的延迟是多少?您多久需要拨打此列表?几乎每一秒,就像在自动完成字段中一样?对于一个由用户按不同参数排序的报告,每分钟说几次?或者类似于很少使用的设置页面?
  • 你有多少数据?几百万?还是几打?如果它太多,最好在后端过滤并仅发送所需的行。
  • 每一行有多大?如果每行都有很多字段,那么你的有效负载就会增加。
  • 您是否必须在初始加载时间(从后端加载所有数据)与响应性(当用户与数据交互时)之间进行权衡?

我希望这会给你关于如何决定的一般想法。如果你有具体情况的详细信息,也许可以讨论更多。

答案 1 :(得分:0)

你必须使用后端。如果您有3000条记录,则需要使用分页。你不应该对前端的所有页面进行排序,因为数据太多了。您需要使用后端来排序并仅发送要在特定页面上显示的数据。

答案 2 :(得分:0)

请不要在前端使用后端功能。 Spring Boot是一个很棒的框架,它为您提供排序和分页功能。

示例:

public interface UserRepository extends CrudRepository<User, Long> {

  Page<User> findAll(Pageable pageable);
  List<User> findByLastname(String lastname, Sort sort);
}

请查看文档 - &gt; Spring Data Jpa