使用aiohttp,如果您设置了raise_for_status=True
,它将引发一个ClientError异常。
是否有可能在ClientError异常中访问服务器的响应?
例如,服务器可以返回一个4xx错误,并使用JSON响应解释原因,并且访问它来管理错误(例如Stripe的API)会很有趣。
try:
async with aiohttp.ClientSession() as session:
response = await session.get('http://127.0.0.1:5000/auth/user', raise_for_status=True)
except aiohttp.ClientError as e:
print(e.response.content) # ?
是否可以从异常部分访问服务器的响应?
如果你不想设置raise_for_status=False
(虽然我不明白为什么你不会),你可以捕获异常并获取响应json,如下所示:
try:
async with aiohttp.ClientSession() as session:
response = await session.get('http://127.0.0.1:5000/auth/user', raise_for_status=True)
except aiohttp.ClientError as e:
json = await response.json()
# do something with json
# maybe you want to raise your own exception
# if not, just re-raise e
raise e