理解GET和POST

2017-03-15  本文已影响0人  划满伤痕的天空

前言


昨天帮一位同学解决网络请求的问题,发给我个接口http://www.cego168.com/mobile/iosinterface.php?act=upload&name=jay&mobile=110,用来上传联系人的姓名和手机号。乍一看瞬间有些懵,这不是GET请求吗,这怎么去上传呢,之前在开发中请求提交或者修改等操作都是用的POST请求,也就是我们常见的像这种:

URL:        http://www.cego168.com/mobile/iosinterface.php
paramters:  act=upload&name=jay&mobile=110

URL和参数是分开的,一直以来我都以为GET是用来获取数据的,POST是用来提交修改数据的。带着这个困惑查阅了国内外众多资料,从HTTP到GET和POST,个人总结了一些见解,请往下看:

GET请求

向指定的资源发出“显示”请求,GET应该是安全的且是幂等的。
注: 这里仅对“安全”做下介绍,“幂等”比较难理解,有兴趣的同学可以查下,在此先不介绍

(HTTP协议声明,对于GET方法而言,除了进行获取资源信息外,这些请求不应当再有其他意义。也就是说,这些方法应当被认为是“安全的”。 客户端可能会使用其他“非安全”方法,例如POST,PUT及DELETE,应该以特殊的方式(通常是按钮而不是超链接)告知客户可能的后果(例如一个按钮控制的资金交易),或请求的操作可能是不安全的(例如某个文件将被上传或删除)。
但是,不能想当然地认为服务器在处理某个GET请求时不会产生任何副作用。事实上,很多动态资源会把这作为其特性。这里重要的区别在于用户并没有请求这一副作用,因此不应由用户为这些副作用承担责任。)

上面这一大段话的意思就是,GET请求应该是一些展示类的信息,比如说今日头条获取新闻的展示信息,而每天这些新闻有可能发生变化,这时候请求应该是用GET的。然后用户可能会去参与评论,留言自己的一些观点吐槽等,这时候就应该是POST的方式去提交信息(稍后会介绍下POST的作用和特点),所以总结下来,GET请求应该满足以下特点:

通过以上这些特点我们在平常开发中就能知道哪些场景中应该用GET请求了。下面再说下POST请求:

POST请求

向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件),数据被包含在请求本文中。


综合以上所有特点,以及相应的一些介绍,大致可以总结出:
GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
但是许多人会在更新资源时使用GET,而这样是不合理的,所以上面这个同学发的这个接口,合理的做法是POST请求去更新数据。

上一篇下一篇

猜你喜欢

热点阅读