前端配合后端修复 bug,核心是:先定位问题归属,再提供完整信息,然后高效协作修复,最后验证回归、沉淀经验。
一句话:
bug 修复不是"甩锅",而是"快速定位 + 有效沟通 + 共同验证 + 防止复发"。
下面按"发现 → 定位 → 沟通 → 修复 → 验证 → 复盘"讲。
一、发现 bug 后先做什么
不要一上来就说"接口有问题"。先做三件事:
- 确认现象:什么页面、什么操作、什么结果、期望是什么。
- 确认环境:开发、测试、预发还是生产?哪个浏览器、哪个账号、哪个角色?
- 确认是否可复现:必现还是偶现?步骤是什么?
先自己复现一遍,能复现再往下走。
二、先判断是前端还是后端的问题
这是配合修复最关键的一步。判断错了,会浪费双方时间。
1. 看 Network 面板
打开 DevTools → Network,找到对应请求,看:
- 请求有没有发出去?
- URL、Method 对不对?
- 请求参数对不对?
- 请求头有没有 Token?
- 响应状态码是多少?
- 响应体内容是什么?
2. 快速判断表
| 现象 | 大概率归属 |
|---|---|
| 请求没发出去 | 前端 |
| URL、Method 错 | 前端 |
| 请求参数格式错、字段缺失 | 前端 |
| 请求头没带 Token | 前端 |
| 响应状态码 200,但页面没渲染 | 前端 |
| 响应状态码 200,但 data 为空或字段错 | 后端或契约问题 |
| 响应 400 参数错误 | 看契约,可能前端传错,也可能后端校验严 |
| 响应 401 / 403 | 鉴权问题,前后端都可能 |
| 响应 404 | 路径错、代理错、后端没配 |
| 响应 500 | 后端 |
| CORS 错误 | 后端配置或前端代理 |
| 返回 HTML 而不是 JSON | 代理配错或后端路由错 |
| 数据展示不对,但接口返回正确 | 前端 |
| 接口返回不对 | 后端 |
| 时间、金额格式错 | 看契约,通常 adapter 问题 |
| 偶现、并发问题 | 需要前后端一起查 |
3. 用工具单独验证接口
把请求复制到 Apifox / Postman / curl 单独调:
- 如果单独调也错 → 后端问题
- 如果单独调正常,页面调错 → 前端问题
- 如果参数一样但结果不同 → 看请求头、Cookie、环境差异
这一步能快速分清责任,避免扯皮。
三、怎么给后端提 bug
信息越完整,修复越快。不要只说"接口报错了"。
标准 bug 描述模板
text
【标题】用户列表接口返回 500
【环境】测试环境
【页面】/system/user
【账号】admin / 角色:超级管理员
【浏览器】Chrome 120
【复现步骤】
1. 登录后台
2. 进入用户管理
3. 点击搜索,关键词输入"张"
4. 点击查询
【期望结果】返回用户列表
【实际结果】接口 500,页面提示"请求失败"
【请求信息】
URL: GET /api/user/list?keyword=张&page=1&pageSize=10
Headers: Authorization: Bearer xxx
响应: { "code": 500, "message": "NullPointerException" }
Request ID: abc-123-def
【附件】
截图、Network 截图、HAR 文件
关键信息:
- 请求 ID:后端能直接查日志
- 完整请求:URL、参数、Header
- 完整响应:状态码、响应体
- 复现步骤:越具体越好
- 环境:测试还是生产
- 账号角色:权限相关 bug 必带
怎么拿 Request ID
- 后端在响应头返回
X-Request-Id - 前端在 request 拦截器里打印
- 没有的话,用时间点 + 接口 + 参数让后端查日志
四、高效沟通
1. 描述问题,不评价人
不要说"你这接口又挂了",说"这个接口在 XX 场景返回 500,麻烦看下日志"。
2. 给出证据
截图、Network 面板、HAR、请求 ID,比文字描述有用得多。
3. 说清影响范围
"这个 bug 影响所有用户登录"比"登录有问题"更容易排优先级。
4. 同步进展
修的过程中,前端可以:
- 先做兜底提示
- 先屏蔽入口
- 先加 loading 和错误处理
不要干等。
5. 用协作工具
- Jira / 禅道 / Tapd 建 bug 单
- 钉钉 / 飞书群里同步
- 关联需求和接口文档
五、常见 bug 类型与配合方式
1. 接口 500
- 前端:提供请求 ID、参数、时间点
- 后端:查日志、定位异常
- 前端:加错误提示和兜底
2. 字段对不上
- 前端:截图响应体,指出期望字段
- 后端:确认是否改名、漏返回
- 一起:更新契约文档,改 adapter
3. 鉴权失败
- 前端:确认 Token 是否携带、是否过期
- 后端:确认校验逻辑、白名单
- 一起:确认 401 后是否跳登录、是否刷新 Token
4. 跨域
- 前端:确认是否走代理
- 后端:确认 CORS 配置
- 生产:确认 Nginx 代理
5. 数据不一致
- 前端:确认提交参数
- 后端:确认入库逻辑
- 一起:确认是否有并发、缓存、事务问题
6. 偶现问题
- 前端:记录时间、用户、操作、请求 ID
- 后端:查日志、链路追踪
- 一起:看是否并发、超时、网络、缓存
7. 性能问题
- 前端:看接口耗时、资源加载
- 后端:看 SQL、慢查询、下游服务
- 一起:确认是网络、接口还是渲染
六、修复中的配合
1. 前端能先做的
- 加 loading、错误提示、空状态
- 加参数校验,减少无效请求
- 加防抖节流,减少请求量
- 加兜底展示,避免白屏
- 加日志上报,方便定位
2. 后端修复后
- 前端先本地验证
- 再在测试环境验证
- 确认主流程 + 边界 + 异常
3. 接口变更
- 后端改字段要提前通知
- 前端同步改 adapter 和类型
- 更新接口文档
4. 紧急线上 bug
- 先止血:前端降级、屏蔽入口、加提示
- 再定位:看日志、请求 ID、监控
- 后修复:后端热修或前端发版
- 最后复盘
七、修复后怎么验证
不要只看"页面好了",要覆盖:
- 原 bug 场景:按复现步骤验证
- 正常流程:主流程没被影响
- 边界场景:空数据、超长、特殊字符
- 异常场景:超时、断网、无权限
- 相关功能:同接口的其他页面
- 多端:Web、H5、小程序是否一致
- 多角色:不同权限账号
验证通过后,在 bug 单里写清楚验证结果和环境。
八、回归与防复发
1. 补测试
- 关键逻辑补单元测试
- 主流程补 E2E
- 接口补契约测试
2. 补监控
- 前端错误监控:Sentry
- 接口错误率监控
- 关键业务埋点
3. 补文档
- 更新接口文档
- 记录已知问题
- 写 FAQ
4. 复盘
- 根因是什么
- 为什么没提前发现
- 流程哪里可以改进
- 是否需要加规范、加检查
复盘对事不对人,重点是改进流程。
九、常见坑
- 不定位就甩锅,浪费时间
- 只说"有问题",不给请求 ID 和参数
- 截图只截一半,看不到关键信息
- 环境说不清,测试和生产混了
- 偶现问题不记录时间和用户
- 后端改了字段不通知前端
- 修完不回归,引发新 bug
- 线上 bug 不先止血,直接查根因
- 复盘变成追责,没人愿意说真话
十、总结
前端配合后端修 bug 的核心:
先定位归属,再给完整信息,然后高效协作,最后验证回归、防止复发。
一个高效的 bug 修复流程:
- 自己复现,确认现象和环境
- 看 Network,判断前端还是后端
- 用 Apifox/curl 单独验证接口
- 提 bug 带请求 ID、参数、响应、截图
- 前端先做兜底,不干等
- 后端修复后本地 + 测试环境验证
- 覆盖主流程、边界、异常
- 更新文档,补测试和监控
- 复盘改进流程
如果你告诉我你们用的 bug 管理工具和接口工具,我可以给你一份更具体的 bug 模板和排查清单。