如何从aiohttp ClientError获得响应?



使用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

最新更新