我在代码中使用了requests模块(显然是在做请求),由于我需要为每个请求包括冗余参数,因此我的代码很快就失控了:
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()
应该能够做到这一点,尽管我不知道如何使用它。我只是想尽量减少可能在脚本中全局设置的重复。也许这是不可能的,或者它实际上是如何工作的?预先感谢。
答案 0 :(得分:1)
默认情况下,您可以使用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
函数的包装,而后者又是{{ 1}}方法。因此,您可以替代requests.Session.request
来用一条语句替代所有HTTP方法。但是,由于它是一个方法而不是一个未绑定的函数,所以必须使用requests.Session.request
代替:
functools.partialmethod