我有很多使用requests调用api的函数。因此,许多调用类似于下面的调用(本例简化):
(http%3A%2F%2F23.23.82.251%3A9116%2Fsolr%2Fdb%2Fselect%3Fq%3D*%3A*%2B_val_%3A%2522geodist%2528%2529%2522%26fq%3D(ProviderType%3A10)%26rows%3D100%26wt%3Djson%26indent%3Dtrue%26fl%3DProviderID%2CProviderType%2CProviderName%2CProviderAddress%2CCityAreaID%2CCityAreaName%2CCity%2CState%2CLatlong%2Cscore%26fq%3D{!geofilt}%26sfield%3DLatlong%26pt%3D20.296059%2C85.82454%26d%3D5%26sort%3Dgeodist()%2520asc)
所有请求都将通过身份验证,我希望找到一种更清晰的方式来验证所有请求,而不是仅在每次调用中包含requests.get(url, data=data, auth=('user','password'))
部分。
我的第一个想法是创建一个继承自auth=('user','password')
类的子类,然后覆盖requests
函数。如下所示:
get
然后使用class authRequests(requests):
def get(url, data):
return requests.get(url, data=data, auth=('user', 'password'))
代替authRequests.get
。我没有经验丰富的经验,所以这可能不是一个有效的例子,但我想知道这是否是正确的方法,或者我是否应该使用不同的方法来做到这一点?
答案 0 :(得分:2)
您应该使用requests.Session()
来保存不同请求中的内容:
会话还可用于向请求方法提供默认数据。这是通过向
上的属性提供数据来完成的Session
对象
with requests.Session() as session:
session.auth = ('user', 'password')
session.get(url, data=data1)
response = session.post(another_url, data=data2)