我正在实施一个宁静的API接口,并且想知道一些限制和最佳做法。
我有一个GET请求,它从数据库表中检索一系列条目。
然而我的问题是,我允许我的来电者通过一套非常复杂的标准来过滤他们想要的东西。
我的情况是:
如果我不想违反RESTful API,但希望实现我的目标,即传递一长串查询参数,那么解决这个问题的最佳做法是什么?
欢迎任何建议。谢谢!
答案 0 :(得分:2)
一种解决方案是在前端而不是后端进行过滤。因此,您可以通过GET请求获取所有记录,但只向用户显示已过滤的记录。 (当然,您不会获得用户无权查看的记录,而是在服务器端对其进行过滤)
优势:
一个纯粹的REST解决方案,您不会发送POST请求来获取某些东西
您在开始时发出了1个请求,并且当用户尝试使用其他过滤器时,不需要其他请求
缺点:
如果数据集太大,则请求可能会消耗大量网络资源。但这将是1次请求,因为其他过滤不需要新的请求。另外,对响应进行gzip处理会显着减小JSON响应的大小,因此您可以通过数百KB发送包含数千条记录的JSON响应。
如果数据集太大,则过滤操作可能会在浏览器中花费很长时间并暂时冻结。
因此,此解决方案在很大程度上取决于您的用例,但这是解决方案之一。也许混合方法可能有用,例如在服务器端进行一些主要过滤,而在客户端进行其余的过滤。