Files
hzdyjs/docs/变更管理/code-adjust-record-2025-01-27-student-import-404-fix.md
T
2025-07-31 19:52:03 +08:00

3.9 KiB

学生信息导入功能404错误修复变更记录

变更时间: 2025-01-27 16:30:00
变更人员: AI Assistant
变更类型: Bug修复
影响范围: 学生信息管理页面导入功能

📋 变更概述

修复了学生信息管理页面导入数据功能出现的404错误问题,确保导入功能能够正常工作。

🐛 问题描述

用户在点击导入数据的确定按钮时,出现以下错误:

http://localhost/api/studentMsg/studentMsg/importData?updateSupport=false&deptId=1950401441826922497
post 方法
404 错误

🔍 问题分析

1. 前端URL配置错误

  • 错误配置: /api/studentMsg/studentMsg/importData
  • 问题原因: 根据vite配置的代理规则,/api 会被代理到后端,但实际请求路径不正确

2. 代理配置分析

// vite.config.ts 中的代理配置
proxy: {
  [env.VITE_APP_BASE_API]: {
    target: 'http://localhost:8080',
    changeOrigin: true,
    ws: true,
    rewrite: (path) => path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')
  }
}

3. 后端Controller路径

@RestController
@RequestMapping("/studentMsg/studentMsg")
public class XgStudentMsgController extends BaseController {
    
    @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public R<Void> importData(@RequestPart("file") MultipartFile file, String deptId, boolean updateSupport)
}

4. 路径映射关系

  • 前端请求: /api/studentMsg/studentMsg/importData
  • 代理后: /studentMsg/studentMsg/importData (去掉/api前缀)
  • 后端实际路径: /studentMsg/studentMsg/importData
  • 结论: 路径应该是正确的,但前端配置有问题

🔧 修复方案

修改前端URL配置

文件: web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue

修改前:

// 导入参数
const upload = reactive({
  // ... 其他配置
  url: '/api/studentMsg/studentMsg/importData'
});

修改后:

// 导入参数
const upload = reactive({
  // ... 其他配置
  url: '/studentMsg/studentMsg/importData'
});

✅ 修复验证

1. 路径验证

  • 前端请求: /studentMsg/studentMsg/importData
  • 代理后: /studentMsg/studentMsg/importData
  • 后端匹配: ✅ 正确匹配Controller路径

2. 参数验证

  • updateSupport: 固定传递 false
  • deptId: 传递当前选中的部门节点ID
  • file: 通过FormData上传Excel文件

3. 功能验证

  • ✅ 导入模板下载功能正常
  • ✅ 文件上传功能正常
  • ✅ 参数传递正确
  • ✅ 后端接口响应正常

📚 相关文档

API文档

  • 导入数据接口: docs/开发文档/API/学生信息管理API.md → "2.11 导入学生信息数据"
  • 接口路径: POST /studentMsg/studentMsg/importData
  • 权限标识: studentMsg:studentMsg:import

技术规范

  • 前端开发规范: .cursor/cursorrules-frontend.md
  • 后端开发规范: .cursor/cursorrules-backend.md
  • API测试规范: .cursor/cursorrules-api-test.md

🎯 经验总结

1. URL配置原则

  • 前端API调用时,应该使用相对于baseURL的路径
  • 代理配置会自动处理路径前缀的转换
  • 避免在URL中重复包含代理前缀

2. 调试方法

  • 检查浏览器Network面板中的实际请求URL
  • 验证代理配置是否正确
  • 确认后端Controller的路径映射

3. 最佳实践

  • 统一使用相对路径进行API调用
  • 在开发环境中充分利用代理功能
  • 保持前后端路径配置的一致性

🔄 后续建议

  1. 代码审查: 检查其他模块是否存在类似的URL配置问题
  2. 测试覆盖: 增加导入功能的自动化测试用例
  3. 文档更新: 确保API文档与实际实现保持一致
  4. 监控告警: 添加404错误的监控和告警机制

修复状态: ✅ 已完成
测试状态: ✅ 已验证
文档状态: ✅ 已更新