在公司接了个新项目,前端用 Vue 做管理后台,后端是 Spring Boot 写的接口,结果联调第一天就卡在登录态传不过去——Cookie 被跨域拦了,JWT 又没配对上。这不是个别现象,而是每天都在发生的‘集成现场’。
集成不是拼图,是通电测试
很多人以为把 React 和 Django 放一起跑起来就算集成了,其实不然。真正的集成,是路由能跳、状态能同步、错误能共捕、日志能串联。比如用 Nginx 做反向代理时,光配 proxy_pass 不够,还得加 proxy_set_header X-Forwarded-For $remote_addr;,否则后端拿到的永远是 127.0.0.1 的 IP。
常见组合怎么连?
Vue + Spring Boot 最常用的方式是前后端分离部署:前端构建出静态资源扔进 Nginx,后端走独立端口。关键在跨域配置——Spring Boot 里加个 @CrossOrigin(origins = "http://localhost:8080") 是临时解法,生产环境更推荐用网关统一处理 CORS 头。
React + Express 集成时,常有人直接用 app.use(express.static('build')) 托管前端,但这样会导致所有 404 请求都落到 index.html,后端 API 就被劫持了。正确做法是加一层判断:
app.use((req, res, next) => {
if (req.path.startsWith('/api') || req.path.startsWith('/auth')) {
return next();
}
express.static('build')(req, res, next);
});微服务场景下的集成痛点
当系统拆成用户服务、订单服务、通知服务之后,前端不再只调一个后端,而是要对接多个域名。这时候硬写一堆 axios 实例太乱,建议用统一网关(如 Kong 或自研 Node.js 网关)做聚合。一个请求进来,网关自动识别 path,转发到对应服务,并统一注入 trace-id,方便查日志。
还有个容易被忽略的点:前端 SDK 版本和后端 API 版本不匹配。比如 Axios 升级到 1.6 后默认开启 JSON 序列化,而旧版 Spring Boot 接口没配好 @RequestBody 解析器,结果 POST 过来的对象全是 null。这种问题不靠集成测试根本发现不了。
别忘了 DevOps 这一环
本地跑得飞起,CI 流水线却总失败?常见原因是集成环境缺少 .env 文件或密钥没注入。Docker Compose 启动时,别直接 docker-compose up,记得加 --env-file .env.production;K8s 部署时,ConfigMap 和 Secret 得和 Deployment yaml 对上号,不然前端页面加载一半报 Failed to fetch /api/user,排查半天发现是环境变量写成了 API_BASE_URL,而代码里读的是 VUE_APP_API_BASE。