gpt4 book ai didi

python - 合并请求中的冗余参数

转载 作者:行者123 更新时间:2023-12-01 09:10:28 25 4
gpt4 key购买 nike

我在代码中使用请求模块(显然是为了执行请求),并且由于我需要为每个请求包含冗余参数,我的代码很快就会失控:

def one(url, data, headers, cert):
...
return requests.post(url, json=data, headers=headers, verify=cert)

def two(otherurl, otherheaders, cert):
...
response = requests.get(otherurl, headers=otherheaders, verify=cert).json()

有没有办法告诉每个请求使用 verify=cert 而不必将其包含在每个请求语句中?我认为 session() 应该能够做到这一点,尽管我不知道如何使用它。我只是想尽量减少可能在我的脚本中全局设置的事情的重复。也许这是不可能的或者它实际上是如何工作的?提前致谢。

最佳答案

您可以使用 functools.partial 来覆盖这些函数,并默认将 verify=cert 作为参数传递:

from functools import partial
requests.post = partial(requests.post, verify=cert)
requests.get = partial(requests.get, verify=cert)

或者,如果您查看 requests 的源代码,您会发现这两个函数都只是 requests.request 函数的包装器,其中turn 是 requests.Session.request 方法的包装器。因此,您可以重写 requests.Session.request,而不是用一条语句重写所有 HTTP 方法。然而,由于它是一个方法而不是未绑定(bind)的函数,因此您必须使用 functools.partialmethod 来代替:

from functools import partialmethod
requests.Session.request = partialmethod(requests.Session.request, verify=cert)

关于python - 合并请求中的冗余参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51699140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com