You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:10:28