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>]}
posted @ 2023-10-22 00:22  挖洞404  阅读(94)  评论(0编辑  收藏  举报