news 2026/8/3 15:46:23

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
若依自定义后端接口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 } }



版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 0:24:28

别再只知道div和span!这10个冷门HTML标签,让你的开发效率翻倍

在前端开发中,我们每天都在和HTML标签打交道,但大多时候只用div、span、p、img这些“熟面孔”。其实HTML标准中藏着很多功能强大却鲜为人知的冷门标签,它们能帮我们减少冗余代码、提升页面语义化,甚至无需JS就能实现部分交互效果。 今天就给大家盘点10个实用的冷门HTML标签…

作者头像 李华
网站建设 2026/8/4 6:56:48

26、嵌入式系统调试全攻略:硬件辅助与启动问题排查

嵌入式系统调试全攻略:硬件辅助与启动问题排查 1. 硬件辅助调试概述 在嵌入式系统开发中,调试是一个至关重要的环节。尤其是对于早期内核启动代码的调试,KGDB 往往无法胜任,因为它要在大部分底层硬件初始化代码执行后才会被初始化。而当你面临全新电路板设计、移植引导加载…

作者头像 李华
网站建设 2026/8/4 6:32:46

拆解:30W 2800转速 飞利浦筋膜枪

Big-Bit本次拆解的飞利浦便携式筋膜枪PPM3203G的电驱电控系统&#xff0c;其官方宣称这款产品能做到不仅以仅重0.7kg的迷你机身&#xff0c;轻松收纳进通勤包或旅行箱。更在按摩体验上实现了8mm深度振幅与高达2800转/分钟的动力输出&#xff0c;精准直击肌肉深层筋膜。那么这款…

作者头像 李华
网站建设 2026/8/4 6:57:31

odoo-080 _check_company 相关的属性、方法

文章目录相关属性和方法company 相关属性company 相关方法总结相关属性和方法 company 相关属性 字段中属性定义check_companyTrue 为模型添加 company_id 字段 company_id fields.Many2one(res.company, stringCompany, defaultlambda self: self.env.company)模型属性定…

作者头像 李华
网站建设 2026/8/3 3:02:32

AI助力编程新时代:程序员的核心能力现在是什么?

最近一个月&#xff0c;我做了一件从未做过的事&#xff1a;构建微调大模型的数据集。我从未学过 Python&#xff0c;却使用 AI 完成了所有代码&#xff0c;验证了我的构想。 工作流是这样的&#xff1a; 我负责架构&#xff1a;技术调研&#xff0c;拆解流程&#xff0c;明确…

作者头像 李华