当前位置: 首页 > news >正文

第一篇:图书管理系统前后端接口联调全过程,参数传递踩坑汇总

一、前言
本次实训我负责校园图书管理系统的前后端接口对接、Axios 请求封装与全模块联调工作,项目采用 SpringBoot + Vue2 + ElementUI 技术栈。前期后端同学写完接口、前端页面写完后,出现大量参数不匹配、跨域、数据格式转换、分页传参异常等问题。本篇记录完整联调流程,以及开发中遇到的典型坑点与解决方案,给同做图书管理系统实训的同学参考。
二、项目环境与接口基础搭建
前端统一封装 Axios 请求
新建 request.js 文件,统一配置请求基地址、请求头、响应拦截器,统一处理后端返回状态码。
javascript
运行
import axios from 'axios'
const service = axios.create({
baseURL: 'http://localhost:8080/api',
timeout: 5000
})
// 请求拦截器携带token
service.interceptors.request.use(config => {
config.headers.token = localStorage.getItem('token')
return config
})
// 响应拦截统一捕获错误
service.interceptors.response.use(res => res.data, err => {
alert("接口请求失败:" + err.response.data.msg)
})
export default service
按业务模块拆分接口文件
新建 api 文件夹,拆分 login.js、book.js、borrow.js、user.js,将登录、图书、借阅、用户权限接口分类管理,方便维护。
后端跨域配置
后端添加全局跨域配置类,解决前端本地 8081 端口访问后端 8080 端口跨域报错。
三、接口联调完整流程
核对后端接口文档:请求方式 GET/POST、请求路径、入参名称、返回 JSON 结构;
前端编写对应请求函数,页面引入调用;
控制台打印请求参数、返回数据,核对字段名是否一致;
分页、模糊查询、表单新增 / 编辑接口单独测试;
批量操作、借阅事务接口重点校验。
四、联调高频踩坑与解决办法
坑 1:前端传参名和后端实体类属性大小写不一致
问题:前端传 bookName,后端实体是 bookname,接收参数为空。
解决:统一前后端命名规范,全部使用小驼峰;后端添加 @Data 自动映射,复杂参数用 DTO 接收。
坑 2:POST 提交表单,后端接收不到 JSON 参数
问题:前端未设置请求头 Content-Type:application/json,后端 @RequestBody 接收为空。
解决:Axios 封装时默认 json 传参,提交表单对象直接传 JSON,不要拼接 params。
坑 3:分页参数 pageNum、pageSize 传参混乱
图书列表、借阅记录都需要分页,初期有的接口放在 params,有的放在路径。
解决:统一分页参数通过 params 传递,后端使用 MyBatis-Plus 分页插件自动接收。
坑 4:删除、修改接口携带 id,后端接收 null
问题:删除按钮点击时 id 未正确绑定,接口请求无参数。
解决:页面绑定行数据 id,调用接口时显式传入 id,控制台打印校验参数。
坑 5:登录 token 过期未拦截,接口报未授权
解决:在响应拦截器捕获 401 状态码,自动跳转到登录页面,清空本地 token。
五、总结
接口联调是前后端分离项目中耗时最长的环节,前期统一接口规范、统一参数命名能减少 80% 的问题。本次图书系统包含登录权限、图书 CRUD、借还业务多套接口,完整走完联调流程后,我掌握了 Axios 封装、跨域处理、参数排错思路,为后续做其他管理系统打下基础。
截图建议:Axios 封装代码截图、控制台接口报错截图、跨域配置代码截图、图书列表接口请求成功效果图

http://www.jsqmd.com/news/1107541/

相关文章:

  • Midscene.js:颠覆传统UI自动化的视觉驱动架构革命
  • AI 到底是怎么“学会”的?用大白话讲清机器学习核心原理
  • 携手订单日记,渤岳网络开启智能升级之路
  • 红外测温传感器在电炖锅中的测温应用
  • 2026年东莞抖音本地服务商性价比对比指南
  • XUnity.AutoTranslator:如何5分钟为Unity游戏添加多语言支持的完整指南
  • 告别模拟器:3步在Windows上安装Android应用的终极指南
  • AI订阅拒付风险高,跨境支付风控如何覆盖续费、退款和争议管理?
  • 方壳电池pack生产线如何选择?
  • MagiskHide Props Config终极指南:10个技巧让Android设备通过SafetyNet检测
  • 【JetBrains官方未公开文档】:Inspect Code规则引擎底层原理与自定义检查器开发实录
  • 终极Axure中文界面汉化指南:3分钟解锁流畅原型设计体验
  • Platinum-MD:让经典MiniDisc设备焕发新生的终极解决方案
  • 计算机毕业设计之基于机器学习的黑龙江省旅游景点数据分析
  • CSDN:SSH协议详解 + Xshell连接Linux虚拟机完整实操
  • 谁破防了?海曦技术张总语音传唤,小唐小朱两幅面孔太真实
  • [智能体-622]:OpenClaw的学习路径:工具,能力闭环->解决复杂问题,业务闭环->价值输出,商业变现,商业闭环。
  • 【IDEA Spring Boot Profile配置黄金法则】:基于Spring Boot 3.2+源码验证的7层加载机制与profile激活失效根因分析
  • 30天小白学透大模型:从入门到实战,附收藏路径助你进阶!
  • OpenClaw养龙虾教程:搭建你的虚拟虾塘,实时监控生长
  • 苹果 App Store 审核被拒 4.3(b) 怎么办?一文讲清楚原因及解决方案,亲测有效
  • 终极指南:5个简单技巧让waifu2x-caffe成为你的图像处理神器 [特殊字符]
  • 查新报告查询渠道有哪些?官方入口汇总
  • Java源码隐形水印实战:保护知识产权与追踪代码归属
  • 2026深圳国际物流公司甄选指南,靠谱推荐看这里
  • IDEA Database工具链深度拆解(含源码级原理):从DataSource配置到Query Execution Plan可视化
  • Python爬虫经典案例022:金融数据爬取——股票行情数据采集实战
  • 廊坊市有哪些专业又正规的 GEO 优化公司?一文为你揭晓!
  • 少样本模仿学习:工业场景下最小示范的工程落地实践
  • AI驱动UI自动化测试:从视觉识别到CI/CD集成的全流程实践