我正在构建一个库,用于在web应用程序中列出产品。它必须具有过滤、搜索和排序功能。我有一个web服务,当使用过滤器、搜索和排序参数调用时,可以返回应用了所有这些参数的结果集。如果页面编号和每页的产品数量一起传递,它也可以返回特定的页面。使用此web服务在客户端通过AJAX填充数据看起来非常合适。然而,当点击返回按钮并返回时,页面将丢失所有参数(过滤器、搜索和排序(,页面将显示默认的产品列表,因为URL将保持如下所示,而与过滤器或页面或搜索或排序参数无关
<domain>/productlist
为了保留它们,我必须将它们保存在sessionStorage或任何其他类似机制中。这会违反REST原则吗?我是否必须避免AJAX,并始终在URL中传递参数,以使操作可重复并遵守像这样的REST原则
<domain>/productlist?filter=f1f2f3&search=apple&sort=price&order=1&page=3&items=10
?
我对REST的理解可能也是错误的,因为我对此有点陌生。所以我想更好地理解有一个合适的&合规设计。
要保留它们,应该有一些更好的方法,而不是将这些参数放入会话存储中;其中一种方法是针对每个AJAX请求,通过window.history.pushState
函数将搜索参数推送到window.history
中,一旦用户返回到上一页,您所要做的就是检查urlParams是否已填充或为空,并根据urlParam获取数据。
REST是一个概念,说明您应该如何处理整个前端和后端的请求。AJAX是一种从后端获取数据的方法。
它们可以共存,因此您可以使用AJAX,同时遵守REST.的无状态