在这种情况下,我可以使用除PRG之外的其他模式或方法吗?

时间:2011-09-20 11:25:47

标签: php design-patterns post get search-engine

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

我有一个搜索页面,搜索是通过POST请求完成的(并且有很多参数)。您通常会搜索订单,并且可以搜索地址,日期,人员等。让我们说你做了一个搜索,然后打开一个订单。现在,如果你回去,你的客户会问你一个恼人的弹出窗口:“你想用其参数重新发送帖子请求吗?” (或类似的东西)。

弹出窗口很烦人,我不认为我的客户想拥有它:)

我在想,也许最好将帖子参数存储在会话中,提供一个链接(因此你必须使用该链接,并且不能点击你的客户端中的“返回”)这会产生一个新的帖子请求存储在会话中的那些参数,并没有恼人的弹出窗口......

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

所以我的这个问题/问题是:

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

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您希望共享生成的URI,和/或尽可能简洁 - 请使用PRG。如果您更关心性能,轻松阅读代码和开箱即用的解决方案 - 请使用GET。

谷歌以GET为例,结果却是一个非常丑陋的URI - 但它很有效,而且很快。

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

答案 1 :(得分:1)

  

我应该使用POST还是GET进行搜索

绝对是GET。

PRG模式在这里不适用。