requests模块Request类
1、介绍
requests.request函数执行返回requests.Response类的对象。当然,其他请求函数执行返回也是如此。
然后res.request可以调用获取该响应对象的请求对象,即requests.Request类的对象。如果没有重定向,此时的Request即基本是设置request请求函数的参数设置的。
2、类和初始化
class Request(RequestHooksMixin):
def __init__(
self,
method=None,
url=None,
headers=None,
files=None,
data=None,
params=None,
auth=None,
cookies=None,
hooks=None,
json=None,
):
- Request类支持开发者进行自定义初始化,但是并不能发起请求
3、属性和方法
(1)url和method
这两个属性类型为字符串,并且一个正常的request方法调用其值不为空
(2)headers
1)从值的形式上来说,是字典形式,键和值都是字符串。但实际的数据类型为<class ‘requests.structures.CaseInsensitiveDict’>
2)其值往往也不为空,模块代码会默认设置和携带一些头部
3)以下四种均输出,证明大小写不敏感
if 'user-agent' in res.request.headers:
print(1)
if 'user-agent' in res.request.headers.keys():
print(12)
if 'User-Agent' in res.request.headers:
print(13)
if 'User-Agent' in res.request.headers.keys():
print(134)
4)对headers直接在pyqt等要求参数为字符串str的场景中必须使用str函数进行强转
(3)body
如果没有设置data或者json,其值为None,类型为NoneType
在pyqt等要求参数为字符串str的场景中必须使用str函数进行强转
如果设置了data或者json,其值为str类型
(4)hooks
属性类型为字典,字典只有一个元素,其键为response,值为一个列表,列表的元素为定义的钩子函数
在pyqt等要求参数为字符串str的场景中必须使用str函数进行强转
{'response': [<function print_url at 0x0000026BC320F0D0>, <function change_url at 0x0000026BC35D0700>]}