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

若依自定义后端接口404踩坑记录

博主在后端自定义了接口:

@PostMapping("/upload") public AjaxResult upload(@RequestPart("file") MultipartFile file, @RequestParam("studentId") String studentId, @RequestParam("thesisTitle") String thesisTitle, @RequestParam("thesisKeywords") String thesisKeywords) { try { TbThesis thesis = new TbThesis(); thesis.setThesisTitle(thesisTitle); thesis.setThesisKeywords(thesisKeywords); thesis.setStudentId(studentId); String url = tbThesisService.uploadThesis(file, thesis); Map<String, String> data = new java.util.HashMap<>(); data.put("url", url); return AjaxResult.success("上传成功", data); } catch (Exception e) { return AjaxResult.error(e.getMessage()); } }

但是前端调用ajax请求却报错404,经过仔细排查,发现是因为在 RuoYi-Vue 的前端工程里,“裸” ajax(axios)404、跨域、认证失败、统一错误处理全都没有了。不经过vite转发不会到后端8080端口。

应当在api/system目录下注册js代码

import request from '@/utils/request' export function uploadThesis(data) { return request({ url: '/system/thesis/upload', method: 'post', data, headers: { 'Content-Type': 'multipart/form-data' } }) }

然后,前端页面直接调用封装方法:

const fd = new FormData() fd.append('file', file.value) fd.append('thesisTitle', form.thesisTitle) fd.append('thesisKeywords', form.thesisKeywords) fd.append('studentId', form.studentId) loading.value = true try { const { msg } = await uploadThesis(fd) // 2. 直接调用封装方法 ElMessage.success(msg || '上传成功') // 成功后重置 uploadRef.value.clearFiles() Object.assign(form, { thesisTitle: '', thesisKeywords: '', studentId: '' }) } catch (e) { ElMessage.error(e.msg || '上传失败') } finally { loading.value = false } }



http://www.cnnetsun.cn/news/64194.html

相关文章:

  • JVM 安全与沙箱深度解析
  • t-SNE快速降维算法详解与实现
  • Python编程入门从零开始掌握基础语法一
  • 20、BusyBox:嵌入式系统的强大工具
  • python 生成psd文件
  • 25、Linux内核调试全攻略:挑战与解决方案
  • 30、Linux移植与实时性:从定制平台到实时系统的深入解析
  • 【界面案例】火语言RPA读取Excel文件,循环写入界面表格
  • 【JAVA进阶】鸿蒙开发与SpringBoot深度融合:从接口设计到服务部署全解析
  • [C#][winform]基于yolov11的水下目标检测系统C#源码+onnx模型+评估指标曲线+精美GUI界面
  • 【睿擎派】云端一体,多种通信协议构建机械臂运动控制系统
  • 4.1用户空间RTOSAPI
  • 11、嵌入式Linux开发:内核日志存储、追踪系统与设备树管理
  • 17、Yocto项目软件层与应用开发全解析
  • 宁波紧固件产业集群的外向型制造与装备升级路径
  • AI赋能工业4.0:数据堂一站式数据服务加速制造智能化落地
  • 如何打造吸睛动态头像?GIF动态头像制作指南
  • 评估AI的终极答案:LLM-As-a-Judge!AI时代,谁来评判AI?答案是AI自己!
  • Meta封闭技术大门:开源先锋为何倒向闭源阵营?
  • HRNet:深度高分辨率表示学习用于人体姿态估计-k学长深度学习专栏
  • Miniconda环境隔离机制揭秘:保障模型复现精准性
  • 颠覆认知:实测6款AI工具,论文写作“专用”比“通用”强在哪?
  • 【自动控制】自动控制原理中,最小相位系统是什么?
  • 从MySQL到TiDB:迁移经验与效率提升300%的秘诀
  • ComfyUI工作流完全入门指南:零基础到精通
  • AI如何自动修复安装包完整性校验失败问题
  • 用AI加速Manim动画开发:从零到精通的智能辅助
  • ComfyUI vs 传统开发:工作效率提升300%的秘诀
  • 【硬核实测】GPT-5.2、DeepSeek V3.2、Banana Pro 史诗级混战!开发者如何用 Python 构建“全模型”聚合网关?(附源码+Token福利)
  • Arial Unicode MS在企业多语言文档处理中的实战应用