vue过滤应该使用REST API或url参数



我正在设计一个带有REST API的网站,使用Django REST Framework和Vue作为前端,我正在努力找出进行过滤的正确方法。

就我所见,我可以:-

a( 允许通过API使用URL参数(如/?(进行筛选?foo=条形

b( 通过只显示返回的具有foo=bar 的项目,在Vue端进行所有过滤

有什么强有力的理由来做一个而不是另一个吗?

这个问题的真正答案是"这取决于";。

这里有几个问题需要问自己,以帮助确定什么是最佳方法:

如果我不在API级别进行过滤,会返回多少数据

如果只返回几条记录,那么在运行查询时,性能不会受到明显的影响。如果要返回数千,则可能需要考虑服务器端查询/分页。

如果您正在构建一个数据量会随着时间的推移而增长的应用程序,那么最好从一开始就构建服务器端查询。

我希望前端体验是什么样的

对于返回少量数据的API调用,如果您提前返回所有记录并进行客户端过滤,则用户体验的响应性将大大提高。这样,如果用户更改过滤器或点击页面数据,UI几乎可以即时更新。

是否有其他应用程序正在使用我的API

如果您计划构建其他使用API的应用程序,您可能需要在API级别构建过滤,这样您就不需要在每个使用应用程序中重新创建前端过滤逻辑。

希望这些问题能够帮助您找到用例的最佳答案。

每当我遇到这个问题时,我都会问自己一个问题:你在处理多少项?如果你只从API返回一些项目,你可以很容易地在前端进行过滤,并在过滤结果时为自己保存一堆请求。此外,如果结果集很小,那么用这种方式做会快得多,而不是每次过滤器更改时都发送请求。

然而,如果您正在处理大量的项,那么最好在API中过滤掉它们,或者甚至通过数据库查询过滤掉它们(如果您正在使用这些项的话(。这将避免您向前端返回大量结果。此外,在前端过滤大量项目会显著影响性能,因为它通常涉及在集合上循环。

最新更新