如何在Python中正确处理API响应?检测400状态或Bad Request标题
如何正确处理API的无效响应并检查错误状态
你当前的代码存在问题:把JSON响应转成字典后,用substring in response的方式是在检查字典的键是否包含该字符串,而不是检查对应的值,所以根本判断不到title: Bad Request的情况。
下面是正确的处理方式,涵盖异常捕获、状态码检查和响应体字段验证:
import requests url = "https://api123.com" headers = {} # 替换成你的实际请求头 try: # 发送请求并获取响应 response = requests.get(url, headers=headers) # 先检查HTTP状态码,400属于客户端错误 if response.status_code == 400: print("你的数据无效") else: # 尝试解析JSON响应(兼容接口返回非JSON的情况) try: response_data = response.json() # 检查响应体中的status字段或title字段 if response_data.get("status") == 400 or response_data.get("title") == "Bad Request": print("你的数据无效") else: print("数据有效") except ValueError: # 处理非JSON格式的响应 print("接口返回非JSON格式响应") except requests.exceptions.RequestException as e: # 处理网络请求异常(比如连接失败、超时等) print(f"请求出错: {str(e)}")
关键要点说明:
- 优先检查HTTP状态码:
requests响应对象自带status_code属性,直接判断是否为400最直接,无需先解析JSON。 - 安全解析JSON:用
try-except包裹response.json(),避免接口返回非JSON内容导致程序崩溃。 - 安全取值:用
get()方法获取响应体中的字段,即使字段不存在也不会抛出KeyError,提升代码健壮性。 - 捕获网络异常:处理连接超时、DNS解析失败等网络层面的错误,避免程序意外终止。
内容的提问来源于stack exchange,提问作者rbutrnz
相关产品推荐
相关产品推荐

