爬虫02-浅谈GET请求与POST请求

在说请求的方法之前,我们来明确一下URL是什么。URL的全称是统一资源定位符,一个URL其实就对应着网页上的一个资源,例如网页上的一张图片、一首音乐都是一个资源,都有一个URL与之对应。而我们向URL发起请求,实际上是在请求资源。

最基本的请求方法其实有4种,分别为GET、POST、PUT、DELETE。对应着对资源的查、改、增、删。

今天我们就来看一下GET方法和POST方法有什么区别。

首先,从语义上来看,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

然后,从表象上来看,GET与POST有以下的区别:

  1. GET请求的数据会附在URL的后面,以?分割URL和传输的数据,参数之间用&相连接。就如下图这样,在百度中搜索“周杰伦”,传递的数据放在了URL中。

    《爬虫02-浅谈GET请求与POST请求》 image.png

    而POST则会将请求的数据放置在请求的Form(表单)中,就像下图这样,登录拉勾时,你的账号和密码不会附在URL后面,而是被隐藏了起来。

    《爬虫02-浅谈GET请求与POST请求》 image.png

  2. POST比GET的安全性更高,通过上面的对比,其实大家已经能够发现了,如果我们在处理登录页面的时候,采取GET请求,会发生什么事呢?我们输入的账号和密码被明文携带在了URL后面,别人通过查看浏览器历史记录就能知道你的账号和密码,这将会是一件多么可怕的事情。

  3. GET和POST当然还有其他的区别,不过剩下的暂时我们不需要过多地去了解,有兴趣的同学可以浏览下面的网址查看GET和POST的其他区别:

http://www.w3school.com.cn/tags/html_ref_httpmethods.asp

最后,我们再谈一下在HTTP规范中,GET与POST的区别。

  1. 根据HTTP规范,GET用于资源信息的获取,而且是安全并且幂等的。

这里指的安全,仅仅意味着GET只表示资源的获取,而不对资源进行修改。但在实际操作中,很多人并没有按照这个规范来做,也有用GET请求来做增加或删除操作的。
这里的幂等指的是对于同一个URL的请求来说,应该返回相同的结果。而POST则不是幂等的,拿登录来说,同样的一个URL,输入的账号和密码不同,返回的结果也是不一样的。

  1. 根据HTTP规范,POST表示可能会修改服务器上资源的请求。例如常见的评论操作,其实都应该通过POST来实现,评论提交后,资源信息就已经被修改了。

最最后,有的童鞋对使用requests.get()返回一个Response对象没有疑问,而对requests.post()也会返回一个Response对象就有疑惑了,疑惑点都在于post不是向URL传输数据吗,怎么还会返回Response对象呢。

其实GET和POST都是向URL发起请求,只是传递数据的方式不同而已,只要是发起请求,服务器都会给出响应的。

    原文作者:Yan雪杉
    原文地址: https://www.jianshu.com/p/4b02886ab668
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞