HTTP协议
HTTP, Hypertext Transfer Protocol,超文本传输协议。
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。
HTTP协议采用URL作为定位网络资源的标识。
URL格式 http://host [:port] [path]
host: 合法的Internet主机域名或IP地址。
port: 端口号,缺省端口默认为80。
path: 请求资源的路径。
例:
http://www.bit.edu.cn(指的是北京理工大学校园网首页)
http://220.188.111.188/duty(指的是在这样id主机上duty目录下的资源)
URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源。
HTTP协议对资源的操作
方法 | 说明 |
---|---|
GET | 请求获取URL位置的资源 |
HEAD | 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息 |
POST | 请求向URL位置的资源后附加新的数据 |
PUT | 请求向URL位置存储一个资源,覆盖原URL位置的资源 |
PATCH | 请求局部更新URL位置的资源,即改变该处资源的部分内容 |
DELETE | 请求删除URL位置存储的资源 |
PATCH和PUT的区别
假设URL位置有一组数据 Userinfo,包括 Userid、 Username
等20个字段。
需求:用户修改了 Username,其他不变。
采用 PATCH,仅向URL提交 Usernamel的局部更新请求。
采用PUT,必须将所有20个字段一并提交到URL,未提交字段被删除。
PATCH的最主要好处: 节省网络带宽
HTTP协议与Requests库的六个功能是一 一对应的。
Requests库的 head()方法
>>>r=requests.head(‘http://httpbin.org/get’)
>>>r.headers
('content-length: 238","access-control-allow-origin Access
Control-allow-credentials': true, Content-type
application/json,Server: nginx, Connection: keep-alive,
Date: ' Sat, 18 Feb 2017 12: 07: 44 T')*返回值不准确,在此不进行修改了,
返回的是头部信息*
>>>r.text
''
Requests库的 post()方法
>>>payload={'key1': 'value1','key2': 'value2'}
>>>r=requests.post(http://httpbin.org/post,data-payload)
>>> print(r.text)
{ ...
"from":{
"key2": "value2",
"key1": "value1"
},
}
向 URL POST一个字典
自动编码为form(表单) *默认为表单*
>>>r=requests.post(‘http://httpbin.org/post’,data=‘ABC’)
>>> print(r.text)
{ ...
"data": "ABC"
"form":{},
}
向 URL POSTー个字符串
自动编码为data
Requests库的 put()方法
>>> payload={'key1': 'value1', 'key2': 'value2'}
>>>r=requests.put('http://httpbin,org/put',data=payload)
>>> print(r.text)
{ ...
"from":{
"key2": " value2",
"key1": "value1"
},
}