选择GET还是POST?

 

做web开发的人都会遇到下面几个问题:
1 该选择用POST还是用GET呢
2 是否需要一定手段避免重复提交呢
3 还有一个疑问就遇到history.go(-1)的时候,提示网页已过期怎么办

有些程序员理所当然的认为网页过期是无可争议的,但是有没有思考一下如何避免呢。

我的一些经验如下:
理论依据1
数学上有个概念叫做幂等性,意思是一个函数执行n次的结果和一次的结果一样
比如 下面的函数就是幂等的
f(x) = C; C是常量  
f(x) = x;

计算机变成语言的一个功能模块通常也叫做函数,也有幂等性的概念。
意思是 执行n和执行一遍的对系统的作用是一样的。
这一个概念在web开发的时候,非常重要。因为我们需要判断,一个请求是否要避免重复提交,首先需要判断这个请求的操作是否是幂等的。也就是说需要判断这个操作对系统产生的影响。

归结起来,查询操作,可以认为是幂等的,无论一次还是多次,都不会导致系统的数据发生变化。
而提交保存的操作认为是非幂等的,重复提交可能导致产生冗余的数据。
理论依据2
GET 请求不会导致网页已过期,而POST会

经验总结
1 幂等性的操作应当使用GET,哪怕是表单内容很多的查询,也应当把表单的提交方式设置成GET
2 保存更新操作使用POST,并且操作成功的使用redirect 转到另外的页面展示保存结果。
比如 保存成功后转到 列表页面
这样的好处是,即使用户用F5刷新页面,也不会导致重复提交。
 

posted on 2011-07-26 15:16  bicabo  阅读(831)  评论(0编辑  收藏  举报

导航