当接口返回的数据格式不符合预期时,这是一个典型的接口契约被破坏的场景
处理的核心原则是:前端必须进行防御性编程,确保应用不会崩溃,并给予用户和开发者清晰、友好的反馈。
第一层: 请求与响应的统一拦截
在 fetch 或 axios 的拦截器中,对非 200 状态码、网络错误进行统一处理,并尝试解析响应体。
第二层: 数据结构的契约验证
这是最关键的一步。假设约定接口返回 { code: number, data: T, message: string },但实际返回了纯文本、HTML、或字段缺失的对象。
第三层: 组件层的安全渲染与降级 UI
在最终使用数据的 UI 组件中,必须假设任何字段都可能缺失
第四层: 监控、告警与沟通
前端监控: 在 handleError 函数中,将非预期的格式错误上报到监控平台(如 Sentry),附上接口 URL 和响应片段。
友好用户提示: 向用户展示可操作的提示,而非技术细节。
与后端沟通: 将错误日志和具体接口反馈给后端团队,推动完善接口契约、错误处理与文档。
评论区