如何在Flutter中处理仅成功返回200的API调用错误?
API调用无明确错误响应时的错误处理方案
针对这种仅在成功时返回200+响应、失败时无有效反馈的API,可通过以下方式实现可靠的错误处理:
设置请求超时阈值
由于失败时无响应返回,超时是最直接的失败判定依据。根据API的正常响应速度,设置合理的超时时间(比如10-30秒),一旦请求超时,立即判定为调用失败并提示用户。
示例代码(JavaScript):const controller = new AbortController(); const timeoutId = setTimeout(() => controller.abort(), 15000); // 15秒超时 try { const response = await fetch('your-api-url', { signal: controller.signal }); clearTimeout(timeoutId); if (response.status === 200) { // 处理成功响应 } else { alert('请求失败,请稍后重试'); } } catch (error) { // 捕获超时、网络错误等异常 alert('请求失败,请检查网络或稍后重试'); }校验响应数据完整性
即使拿到200状态码,也要验证返回的数据是否符合业务预期(比如是否包含必填字段、数据格式是否正确)。若数据不完整或格式异常,同样判定为调用失败。
示例逻辑(Python):import requests try: response = requests.get('your-api-url', timeout=15) if response.status_code == 200: data = response.json() # 校验必填字段 if 'required_field' not in data: raise ValueError("响应数据不完整") # 处理成功数据 else: print("请求失败,请稍后重试") except (requests.exceptions.RequestException, ValueError) as e: print("请求失败,请检查网络或稍后重试")统一异常捕获逻辑
将所有可能导致请求失败的情况(超时、网络中断、数据校验失败等)统一捕获,通过友好的提示告知用户操作失败,避免用户看到无意义的空白或系统报错。
内容的提问来源于stack exchange,提问作者Minal Suryawanshi
相关产品推荐
相关产品推荐

