在这种情况下,我可以使用其他模式或方法而不是PRG吗?


Can I use another pattern or method than PRG in this case?

我不确定PRG模式对我来说是否是正确的选择。在我介绍我的案例之前,PRG代表Post/Redirect/Get,你可以在这里阅读它:Wiki-article

我有一个搜索页面,搜索是用POST请求完成的(有很多参数)。您通常搜索订单,并且可以搜索地址、日期、人员等。让我们假设你做一个搜索,然后打开一个订单。现在,如果您返回,您的客户端会弹出一个烦人的弹出窗口问您:"您想重新发送带有参数的post请求吗?"(或类似的东西)。

那个弹出式窗口很烦人,我想我的客户不会喜欢它的:)

我在想,也许在会话中存储post参数会很好,提供一个链接(所以你必须使用该链接,并且不能在客户端单击"返回"),这使得一个新的post请求与存储在会话中的这些参数,并且不会有烦人的弹出…

然后我搜索了一下,发现了PRG模式,这似乎很复杂,需要一些额外的编码。我对整个想法的关注是,为什么不让整个搜索使用GET而不是POST呢?

所以我的问题是:

  • 我应该使用POST还是GET来搜索
  • 如果我使用POST,是我的想法还是PRG模式更好?

谢谢!

如果您希望结果URI是共享的,并且/或者尽可能简洁,请使用PRG。如果你更关心性能,更容易阅读代码和一个开箱即用的解决方案——使用GET。

例如Google使用GET,最终得到一个非常难看的URI——但是它可以工作,而且速度很快。

如果你使用SESSION,你会占用不必要的空间来保存它,并且你不能链接到结果,因为URI不再代表页面的阶段,这是一件坏事。我会用PRG代替。

我应该使用POST还是GET来搜索

得到肯定。

PRG模式在这里不适用