每次请求后更新 requests.session() header
update requests.session() header after each request
我正在使用 requests.Session 为 RESTful API 编写一个 python 客户端。 API 在每次请求后生成并 returns 一个新的 CSRFToken。 API 的开发者告诉我我需要像这样更新 session headers:
csrf = session.cookies.get('CSRFToken')
session.headers.update({'x-csrf-token': csrf})
如何在 Session object 处绑定此功能,以便在每次请求后自动调用此功能(也许可以使用一个很好的继承解决方案),这样它就没有在每次请求后由用户调用?
这是您可以执行的操作的最小示例:
import requests
class MySession(requests.Session):
def __init__(self):
super().__init__()
self.headers = dict()
def get(self, url):
if (c := self.cookies.get('CSRFToken')):
self.headers['x-csrf-token'] = c
return super().get(url, headers=self.headers)
with MySession() as session:
(r := session.get('https://www.google.com')).raise_for_status()
我正在使用 requests.Session 为 RESTful API 编写一个 python 客户端。 API 在每次请求后生成并 returns 一个新的 CSRFToken。 API 的开发者告诉我我需要像这样更新 session headers:
csrf = session.cookies.get('CSRFToken')
session.headers.update({'x-csrf-token': csrf})
如何在 Session object 处绑定此功能,以便在每次请求后自动调用此功能(也许可以使用一个很好的继承解决方案),这样它就没有在每次请求后由用户调用?
这是您可以执行的操作的最小示例:
import requests
class MySession(requests.Session):
def __init__(self):
super().__init__()
self.headers = dict()
def get(self, url):
if (c := self.cookies.get('CSRFToken')):
self.headers['x-csrf-token'] = c
return super().get(url, headers=self.headers)
with MySession() as session:
(r := session.get('https://www.google.com')).raise_for_status()