HTTP协议与Requests库方法

HTTP协议

HTTP,Hypertext Transfer Protocol,超文本传输协议。

HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。

“请求与响应”模式——用户发起请求,服务器做相关响应。

无状态——第一次请求与第二次请求之间无相关关联。

应用层——工作在传输层(TCP/IP协议)之上。

HTTP协议采用URL作为定位网络资源的标识。

URL格式:http://host[:port][path]

host:合法的Internet主机域名或IP地址

port:端口号,可省略,默认端口为80

path:请求资源在主机或IP地址中的内部路径

URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个Internet上的一个资源。

HTTP协议对资源的操作

操作说明
GET获取url的资源
HEAD获取url的头部信息(资源很大,可拿下资源的头部信息,分析资源的大概内容)
POST在url资源后面增加数据,不改变原有数据
PUT向url存储资源,覆盖原有数据
PATCH局部更新url的某些资源
DELETE删除url存储的资源

HTTP协议与requests库的方法均相一致。

patch与 put 的区别

假设URL位置有一组数据UserInfo,其中包括UserID、UserName等20个字段。

需求:用户修改了UserName,其他不变。

·采用patch,仅向URL提交UserName的局部更新请求。

·采用put,必须将所有20个字段一并提交到URL,未提交字段将被删除。

PATCH:节省网络带宽,无需提交所有的字段。

Requests库的head方法

>>> import requests
>>> r = requests.head("http://httpbin.org/get")
>> r.headers
{'Access-Control-Allow-Credentials': 'true', 'Access-Control-Allow-Origin': '*', 'Content-Encoding': 'gzip', 'Content-Type': 'application/json', 'Date': 'Fri, 08 Nov 2019 14:36:34 GMT', 'Referrer-Policy': 'no-referrer-when-downgrade', 'Server': 'nginx', 'X-Content-Type-Options': 'nosniff', 'X-Frame-Options': 'DENY', 'X-XSS-Protection': '1; mode=block', 'Connection': 'keep-alive'}
>>> r.text
''

我们用 head 方法来访问 url 链接,再用r.headers展示url头部信息的内容。当我们想用r.text来展示url的全部信息时,发现内容为空。所以用head方法可以用很少的网络流量来获取网页的概要信息。

Requests库的post()方法

>>> payload = {'key1':'value1','key2':'value2'}
>>> r = requests.post('http://httpbin.org/post',data = payload)
>>> print(r.text)
{
...
  "form": {
    "key1": "value1", 
    "key2": "value2"
  }, 
...
}
#我们发现向 URL POST一个字典,
#key1:value2 和 key2:value2 被放在了form(表单)字段下。
#说明向URL POST一个字典或者键值对时,会默认放在表单字段下。
>>> data = 'ABC'
>>> r = requests.post('http://httpbin.org/post',data = 'ABC')
>>> print(r.text)
{ 
  ...
  "data": "ABC", 
  "form": {}, 
  ...
}
#我们发现字符串"ABC"被存储在了data字段中
#URL POST一个字符串时,会默认放在data字段中

这是POST方法根据用户提供的内容的不同,在服务器上会做数据的相关处理。

PUT方法与POST方法类似,但是会将原有数据覆盖掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值