美文网首页
理解GET和POST

理解GET和POST

作者: 划满伤痕的天空 | 来源:发表于2017-03-15 18: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 向服务器发送索取数据的请求
    • GET 将请求数据放在URL中 (如:/test/demo_form.asp?name1=value1&name2=value2)
    • GET 请求理论上无长度限制 (URL不存在参数上限的问题,例如限制1024字节是特定的浏览器及服务器对它的限制)
    • GET 请求不应在处理敏感数据时使用(用户提交信息,账号、密码等)
    • GET 请求只应当用于取回数据 (获取展示类的列表如新闻列表等)
    • GET 请求的数据在 URL 中对所有人都是可见的
    • GET 能够被缓存 (这就会导致某个你输完账号密码后登陆的界面被缓存,其他人查看游览器的历史记录就可以拿到你的账号密码了)

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

    POST请求

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


    • POST 向服务器提交数据的一种请求
    • POST 将请求数据放在消息体中
    • POST 请求理论上也无长度限制,起限制作用的是服务器的处理程序的处理能力
    • POST 请求不会被缓存
    • POST 数据不会显示在 URL 中
    • POST 安全性比GET高(因为请求参数不在URL中并且无法被缓存,所以参数不会被保存在浏览器历史或 web 服务器日志中)

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

    相关文章

      网友评论

          本文标题:理解GET和POST

          本文链接:https://www.haomeiwen.com/subject/udglnttx.html