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

vue3+vite+springboot路径配置:维护统一的baseUrl

提交表单:try…catch 捕获异常,如果校验失败,前台页面会有错误提示。

constsubmitForm=async()=>{try{awaitformRef.value.validate();// 校验失败会抛出异常constsubmitData={...formData};submitData.allowedSubmitTypes=submitData.allowedSubmitTypes.join(',');if(isEdit.value){awaitupdateTask(currentTaskId.value,submitData);ElMessage.success('更新成功');}else{awaitcreateTask(submitData);ElMessage.success('创建成功');}dialogVisible.value=false;taskStore.fetchTasks();}catch(error){// 如果是校验失败,error 中包含具体信息,也可以给一个通用提示ElMessage.error(error?.message||'保存失败,请检查表单填写是否正确');}};

在 createTask / updateTask 的底层 axios 请求中也统一处理错误,将后端返回的错误信息抛出来。

constcreateTask=async(data)=>{try{constresponse=awaitaxios.post('/api/tasks',data);returnresponse.data;}catch(error){console.error('Create task error:',error);// 将错误抛给上层处理,以便显示提示thrownewError(error.response?.data?.message||error.message||'网络错误');}};

如果后端返回的业务错误不在 HTTP 状态码体现,需要手动从 response 中读取错误信息并 throw new Error()。

【错误一】前台页面展示“Network Error”

  1. 问题分析
    a. 后端服务是否正常运行
    访问后端健康检查接口,http://localhost:8080/actuator/health 正常返回
    b. 前端 API 基础地址正确配置
    方式一: 不使用代理,直接请求完整 URL
    axios 的 baseURL的设置
    配置环境变量 .env.development:VITE_API_BASE_URL=http://localhost:8080/api
    前端代码中使用 axios.defaults.baseURL = import.meta.env.VITE_API_BASE_URL

    或者直接配置

// 常见配置axios.defaults.baseURL='http://localhost:8080';

该地址与后端实际运行的地址和端口一致。否则,会产生跨域问题。

同时,后端添加 CORS 配置

@ConfigurationpublicclassCorsConfig{@BeanpublicWebMvcConfigurercorsConfigurer(){returnnewWebMvcConfigurer(){@OverridepublicvoidaddCorsMappings(CorsRegistryregistry){registry.addMapping("/**").allowedOrigins("http://localhost:5173")// 前端开发服务器地址.allowedMethods("*").allowedHeaders("*").allowCredentials(true);}};}}

方式二:使用 Vite,在 vite.config.js 中配置代理

exportdefault{server:{proxy:{'/api':{target:'http://localhost:8080',changeOrigin:true,rewrite:(path)=>path.replace(/^\/api/,'/api')// 保持路径}}}}
  1. 总结
    方式一、方式二,如果两者同时存在且不一致,可能导致请求重复路径。当前选择使用Vite代理。
    维护统一的baseUrl采用以下组合:
    前端:baseURL: ‘/api’
    后端:server.servlet.context-path: /api
    Controller:@RequestMapping(“/tasks”)
    这样实际请求路径:前端 /api/tasks → 代理到后端 http://localhost:8080/api/tasks → 匹配 context-path=/api 和 @RequestMapping(“/tasks”)

前端统一设置 baseURL: 在 axios 封装文件utils/request.js中,设置 baseURL

// request.jsimportaxiosfrom'axios';constrequest=axios.create({baseURL:'/api',// 所有请求自动加上 /api 前缀timeout:15000,});exportdefaultrequest;

后端统一设置上下文路径:配置文件 application.properties

server.servlet.context-path=/api
http://www.jsqmd.com/news/863237/

相关文章:

  • ncmdump终极指南:3步快速解密网易云音乐NCM格式,重获音乐掌控权
  • VSCode 文件搜索 files.exclude 配置如何提升索引速度
  • 3分钟快速上手SketchUp STL插件:从设计到3D打印的完整指南
  • Mos:macOS 鼠标滚轮太生硬?这款免费开源工具让你的滚轮爽如触控板
  • 别再说这是 “又一个 AI Agent 框架” 了
  • 如何解锁NVIDIA显卡隐藏功能:5个简单步骤掌握Profile Inspector
  • AMD Ryzen终极调试指南:免费开源工具SMUDebugTool完全解析
  • 如何实现高效数据解析:百度网盘提取码智能获取技术指南
  • 2026三相温升交直流升流器:现场检修的“移动电源”
  • GitHub中文插件:打破语言壁垒,让代码世界更亲切
  • 索尼IMX811如何重塑工业视觉与专业影像的边界
  • 计算机组成原理笔记(2)
  • 才燊珍重,国曙幸会—复杂用工时代,国曙焕新启航
  • 3分钟实现GitHub界面汉化:浏览器插件让GitHub说中文
  • java springboot-vue的婚庆服务平台的功能设计
  • GLIGEN GUI 数据备份与灾难恢复:AI 创作的安全网
  • 通用GUI编程技术——图形渲染实战(四十五)——D3D12资源与堆管理:从上传到驻留
  • GEO优化的时间窗口期:从流量分发到语义占位的技术范式转移
  • 现代Qt开发教程(新手篇)2.4——QFont 与文本渲染基础
  • 百度网盘提取码智能获取工具:3秒破解资源下载难题的终极方案
  • 如何快速从图表图片中提取数据?WebPlotDigitizer终极使用指南
  • 还有人记得这种古老的语言吗?知道的没几个
  • 无惧极寒酷暑:宽温工控机在极端环境下的硬核坚守
  • BurpSuite实战:存储型XSS上下文识别与CNVD级漏洞验证
  • 华硕笔记本的轻量级遥控器:G-Helper让硬件控制回归简单
  • 嵌入式C++实战第23篇:7 状态消抖状态机 —— 本系列的核心
  • 【无标题】dfgndm,ng,dg,
  • 科技中介机构如何提升服务效率与转化率?
  • 《无人机维修培训哪家好:排名前五专业深度测评》 - 服务品牌热点
  • 智领安全・云启新境|锐捷安全云办公 4.0 焕新升级,重塑企业数字办公基石