SpringBoot + Spring Cloud +Vue 管理系统前端搭建(三、工具模块封装)

java版本ERP管理系统源码 Spring Cloud alibaba Spring Boot MybatisPlus Redis VUE3 ElementUI 微服务​ 3、采购退货:退货单管理:退货单号、产品、退货时间、供应商、仓库、创建人、关联订单、结算账户、退款状态:(未退款、部分退款、全部退款)、审核状态(未审核、已审核)、备注、搜索、重置、新增、导出、删除;2、采购入库:入库单管理(入库单号、产品、入库时间、供应商、仓库、创建人、关联订单、结算账户、付款状态(未付款、部分付款、全部付款)、审核状态(未审核、已审核)、备注、搜索、重置、新增、导出、删除;出库单列表:出库单号、产品信息、客户、出库时间、创建人、总数量、应收金额、已收金额、未收金额、审核状态、操作。 阅读详情

SpringBoot + Spring Cloud +Vue 管理系统前端搭建(三、工具模块封装)

此文转载乐字节
封装axios模块
 
背景   
   使用axios发起一个请求是比较简单的事情,但是axios没有进行封装复用,项目越来越大,会引起越来越多的冗余代码,让代码变的越来越难维护,所以我们对axios进行二次封装,使项目中各个组件能够复用请求,让代码变得更容易维护。

要点
       统一url配置。

       统一api请求

       request请求拦截

       response拦截器

       根据需求,结合vuex做全局的loading动画,或者错误处理

       将axios封装成vue插件使用

文件结构
在src目录下新建http文件夹,用来存放http交互api代码。

api.js、axios.js、config.js、index.js、modules目录

 

api.js
/* 
 * 接口统一集成模块
 */
import * as login from './modules/login'
import * as user from './modules/user'
import * as dept from './modules/dept'
import * as role from './modules/role'
import * as menu from './modules/menu'
import * as dict from './modules/dict'
import * as config from './modules/config'
import * as log from './modules/log'
import * as loginlog from './modules/loginlog'


// 默认全部导出
export default {
    login,
    user,
    dept,
    role,
    menu,
    dict,
    config,
    log,
    loginlog
}

axios.js
1、乐字节

这里导入类配置文件的信息(如baseURL、headers、withCredentials等设置)到axios对象

2、发送请求的时候获取token,如果token不存在,说明未登录,就重定向到系统登录,否则带token继续发送请求

3、如果有需要,可以在这里通过response响应拦截器对返回结果进行统一处理后再返回

import axios from 'axios';
import config from './config';
import Cookies from "js-cookie";
import router from '@/router'

export default function $axios(options) {
  return new Promise((resolve, reject) => {
    const instance = axios.create({
      baseURL: config.baseUrl,
      headers: config.headers,
      timeout: config.timeout,
      withCredentials: config.withCredentials
    })
    // request 请求拦截器
    instance.interceptors.request.use(
      config => {
        let token = Cookies.get('token')
        // 发送请求时携带token
        if (token) {
          config.headers.token = token
        } else {
          // 重定向到登录页面
          router.push('/login')
        }
        return config
      },
      error => {
        // 请求发生错误时
        console.log('request:', error)
        // 判断请求超时
        if (error.code === 'ECONNABORTED' && error.message.indexOf('timeout') !== -1) {
          console.log('timeout请求超时')
        }
        // 需要重定向到错误页面
        const errorInfo = error.response
        console.log(errorInfo)
        if (errorInfo) {
          error = errorInfo.data  // 页面那边catch的时候就能拿到详细的错误信息,看最下边的Promise.reject
          const errorStatus = errorInfo.status; // 404 403 500 ...
          router.push({
            path: `/error/${errorStatus}`
          })
        }
        return Promise.reject(error) // 在调用的那边可以拿到(catch)你想返回的错误信息
      }
    )
    
    // response 响应拦截器
    instance.interceptors.response.use(
      response => {
        return response.data
      },
      err => {
        if (err && err.response) {
          switch (err.response.status) {
            case 400:
              err.message = '请求错误'
              break
            case 401:
              err.message = '未授权,请登录'
              break
            case 403:
              err.message = '拒绝访问'
              break
            case 404:
              err.message = `请求地址出错: ${err.response.config.url}`
              break
            case 408:
              err.message = '请求超时'
              break
            case 500:
              err.message = '服务器内部错误'
              break
            case 501:
              err.message = '服务未实现'
              break
            case 502:
              err.message = '网关错误'
              break
            case 503:
              err.message = '服务不可用'
              break
            case 504:
              err.message = '网关超时'
              break
            case 505:
              err.message = 'HTTP版本不受支持'
              break
            default:
          }
        }
        console.error(err)
        return Promise.reject(err) // 返回接口返回的错误信息
      }
    )
    // 请求处理
    instance(options).then(res => {
      resolve(res)
      return false
    }).catch(error => {
      reject(error)
    })
  })
}

config.js

import { baseUrl } from '@/utils/global'

export default {
  method: 'get',
  // 基础url前缀
  baseUrl: baseUrl,
  // 请求头信息
  headers: {
    'Content-Type': 'application/json;charset=UTF-8'
  },
  // 参数
  data: {},
  // 设置超时时间
  timeout: 10000,
  // 携带凭证
  withCredentials: true,
  // 返回数据类型
  responseType: 'json'
}

index.js
乐字节这里把axios注册为Vue插件使用,并将api模块挂载在Vue原型的$api对象上,这样在能获取this引用的地方就可以通过“this.$api.子模块.方法” 的方式调用api了

// 导入所有接口
import api from './api'

const install = Vue => {
    if (install.installed)
        return;

    install.installed = true;

    Object.defineProperties(Vue.prototype, {
        // 注意,此处挂载在 Vue 原型的 $api 对象上
        $api: {
            get() {
                return api
            }
        }
    })
}

export default install

modules
modules模块下子模块比较多,不方便全贴。这里就以用户管理模块为例。

import axios from '../axios'

 

/*

* 用户管理模块

*/

 

// 保存

export const save = (data) => {
return axios({
url: '/user/save',

method: 'post',

data

})

}

// 删除

export const batchDelete = (data) => {
return axios({
url: '/user/delete',

method: 'post',

data

})

}

// 分页查询

export const findPage = (data) => {
return axios({
url: '/user/findPage',

method: 'post',

data

})

}

// 查找用户的菜单权限标识集合

export const findPermissions = (params) => {
return axios({
url: '/user/findPermissions',

method: 'get',

params

})

}

ps:需要自学视频关注B站:免费学习
 

Spring Boot、 Spring Cloud 、OAuth2 的RBAC 权限管理系统分享 基于 Spring Cloud Hoxton 、Spring Boot 2.2、 OAuth2 的RBAC权限管理系统 基于数据驱动视图的理念封装 Ant Design Vue,即使没有 vue 的使用经验也能快速上手 提供 lambda 、stream api 、webflux 的生产实践 项目源码获取方式:关注本头条号,转发点赞文章之后后天私信【源码】即可获取 核心依赖 模块说明 cjlgb-cloud-platform ├── cjlgb-design-common ... 阅读详情

相关推荐

springcloud+vue实战项目

基于springcloud+vu构建的项目 用maven多模块的方式,下载下来安装maven环境 即可运行

一个简单的springboot+Vue前后端框架搭建

根据网上的一些教程试着搭建了一个简单的前后端分离的用户管理系统。该系统使用Vue框架编写前端代码,Springboot编写后端代码,Mysql作为数据库存储系统的数据。本文着重介绍整个项目的搭建流程以及附加一些在搭建过程的想法和注意事项

weixin_45158611的博客 1万+

基于spring cloud 和vue全家桶的开源电商源码

该项目是github上开源的一套电商源码,基于最新的技术,spring cloud和vue全家桶,有mq,redis,nginx,安全验证框架等,新的流行技术

【业务功能篇96】微服务-springcloud-springboot-认证服务-登录注册功能-Auth2.0-分布式session

通过最基础的登录操作来完成登录处理登录页面处理认证服务的处理会员中心的认证逻辑service中的具体认证处理。

studyday1的博客 2337

基于Jira与Confluence的企业知识库AI助手构建实战

检索增强生成(RAG)技术通过结合信息检索与大型语言模型,有效解决了AI在专业领域知识不足的问题。其核心原理是将外部知识库(如企业文档)进行向量化存储,在用户提问时进行语义检索,并将相关上下文注入提示词中,从而生成精准、有据可依的回答。这一技术架构在工程实践中价值显著,它无需重新训练模型即可让AI掌握特定领域的专业知识,大幅提升了回答的准确性与实用性。典型的应用场景包括智能客服、企业内部知识问答以及代码辅助等。本文以开源项目`dev-kostiuk/jira-confluence-ai-context`为例

weixin_42520448的博客 368

小米路由器R1D进阶玩法:MIXBOX工具箱安装与插件管理指南

本文详细介绍了为小米路由器R1D安装MIXBOX工具箱的完整指南。通过开启SSH、执行一键安装脚本,用户可以轻松解锁路由器的进阶功能,如安装离线下载、内网穿透等插件,从而将旧设备转变为强大的家庭网络服务中心。

weixin_29292431的博客 1116

SpringBoot + Spring Cloud +Vue 管理系统后台搭建(十四、熔断服务)

雪崩效应 服务雪崩效应:在微服务架构中,服务众多,通常会涉及多个服务级层的调用,一旦基础服务发生故障,很可能会导致级联故障,进而造成整个系统不能用。 服务雪崩效应是一种“因服务提供者”的不可用导致“服务消费者”的不可用并将这种不可用逐渐放大的过程。 比如一个系统中A是服务提供者,B是A的服务消费者,C和D又是B的服务消费者。如果A发生故障。则会引起B不可用,B不可用会引起C和D不可用,当这种不可用像滚雪球一样逐渐放大的时候,雪崩效应就形成了。 熔断服务 熔断器的原理很简短,如同电力过载保护器.

Java 璐到底 540

模型性能评估之 Friedman 检验与 Nemenyi 后续检验

前言 当我们提出一种算法,需要知道我们的算法和现在已有的算法相比,性能是否更优的时候,就需要用到模型性能评估的方法。本篇博客介绍一种模型性能评估的方法:Friedman 检验与 Nemenyi 后续检验。 该方法的特点是:可以进行多个算法的比较。下面看看具体的使用: 具体使用 1. 计算序值 假定我们用 D1D_1D1​、D2D_2D2​ 、D3D_3D3​ 和 D4D_4D4​ 四个数据集对算法 AAA、BBB、CCC 进行比较。首先需要得到每个算法在每个数据集上的测试结果,可以是准确率,也可以是均方误差

蕾欧娜与26的博客 1万+

SpringCloud 微服务用户登录设计

微服务下架构下,借助JWT和Spring Gateway过滤器进行统一用户认证,并通过拦截器解析用户携带Token获取当前用户信息存储到ThreadLocal方便业务模块使用。

qq_43534244的博客 1848

阿里平头哥与华为芯片的比较

阿里平头哥与华为芯片代表了中国AI芯片领域的两种典型发展路径:平头哥通过兼容CUDA生态快速切入市场,以较低成本提供接近国际水平的AI算力;华为则坚持全栈自研路线,构建从芯片到框架的完整技术体系,更注重供应链安全和自主可控。从短期来看,平头哥PPU在单卡性能参数上全面超越昇腾910B,接近英伟达H20水平,且成本优势明显,有望在云服务和互联网应用领域取得更大市场份额。而华为昇腾则凭借全栈自研和端边云协同优势,在政企市场和科研领域更具竞争力。

shao.bing的专栏 4013

关于红队方面的学习资料

关于红队方面的学习资料

Sumarua的博客 1085

这可能是全网最详细的 Spring Cloud OAuth2 单点登录使用教程了,妈妈再也不用担心我被面试官吊打了!

spring-cloud-starter-oauth2包含了 spring-cloud-starter-security,所以不用再单独引入了。之所以引入 redis 包,是因为下面会介绍一种用 redis 存储 token 的方式。2、配置好 application.yml将项目基本配置设置好,并加入有关 redis 的配置,稍后会用到。spring:redis:jedis:pool:server:port: 6001endpoint:health:

2401_83916283的博客 2924

Python 爬虫实战:雪球用户数据爬取与投资行为分析(含 API 签名算法解析)

雪球作为国内领先的投资者社区,拥有丰富的用户数据和投资信息。通过爬取雪球用户数据并进行分析,我们可以深入了解用户的持仓偏好、交易行为和投资策略,为企业和投资者提供有价值的市场洞察。

yansideyucsdn的博客 2247

SpringBoot + Spring Cloud +Vue 管理系统前端搭建(二、visual studio code开发前端项目)

我们打开visual studio code , 选择文件------------->将文件夹添加到工作区,导入我们的项目 安装Element 导入后,我们安装以下element 官网:https://element.eleme.cn/#/zh-CN/component/installation 安装命令:npm add element-ui或者也可以用yarn 安装完成后,我们在main.js中引入Element import Vue from 'vue' import App .

Java 璐到底 9386

室内温度控制仿真(Simulink+PLC)

本篇博客将会带领大家解读Simulink自带的仿真模型(Thermal Model of a House),之后再讨论PLC控制系统控制环境温度的一些经验方法

RXXW_Dor的博客 3462

基于DNN神经网络的多输入多输出数据回归预测(附带Matlab代码)

假设我们的输入数据包含n个特征,输出数据包含m个特征。在本文中,我们将介绍如何使用DNN(深度神经网络)实现多输入多输出数据回归预测,并提供相应的Matlab代码。需要注意的是,上述代码中的DNN模型是一个简化的示例,您可以根据实际任务的复杂程度和要求进行相应的调整和优化。综上所述,我们介绍了如何使用DNN神经网络实现多输入多输出数据回归预测,并提供了相应的Matlab代码。函数对DNN模型进行训练,其中输入数据需要转置,以适应网络的输入要求。最后,我们使用训练好的模型对测试数据进行预测,并打印预测结果。

DevWizard的博客 1068

SpringBoot + Spring Cloud +Vue 管理系统前端搭建(一、搭建前端环境)

我们前台用的是Vue,大家可以参看以下官网学习 Vue官网:https://cn.vuejs.org/ Vue教程:https://www.runoob.com/vue2/vue-tutorial.html Vue-Router教程:https://www.runoob.com/vue2/vue-tutorial.html Vuex教程:https://vuex.vuejs.org/zh/guide/ Element教程:https://element-plus.org/#/zh-CN 开.

Java 璐到底 1424

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

基于springboot+spring cloud+jpa+vue实现学生成绩管理系统

1、基本技术 通过之前的微服务入门,这次不再mybatis上开发,改为基于spring jpa开发一个简单的学生成绩管理系统,基本SpringBoot + SpringCloud+ JPA + VUE框架开发 2、需求说明 使用微服务架构完成《学生成绩管理系统》,它包含学生表和成绩表(科目是动态保存和动态展示)。 具体思路是: 使用Eureka搭建注册中心,并实现高可用。 开发学生成绩管理业务服务,并向注册中心注册。 使用ZUUL或SpringCloudGateway开发网关服务。...

weixin_39240837的博客 3667

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SpringBoot + Spring Cloud +Vue 管理系统前端搭建(六、完善登录流程)

这里我们简单做一个登录界面,界面如图: 话不多说直接上代码 首先我们修改登录界面 login.vue

Java 璐到底 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Spring Cloud智慧云停车场服务管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

Spring Cloud智慧云停车场服务管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】,拿走直接用(附源码,数据库,视频,可提供说明文档(通过*AIGC*)*技术包括:MySQL、VueJS、ElementUI、(Python或者Java或者.NET)等等*功能如图所示。可以滴我获取详细的视频介绍

yunque__的博客 958

基于spring cloud+vue的社团管理系统_lbc7e7v4

前端页面数据处理传输以及页面展示使用Vue技术 采用B/S架构,使用Maven作为项目管理工具,使用Springboot+Mybatis做整合开发 ,基于spring cloud+vue的社团管理系统_lbc7e7v4采用的开发工具:IntelliJ IDEA,VScode;数据库管理软件:Navicat;开发技术框架:MyBatis,Spring Boot,Vue;使用Mysql数据库构建数据库表开发步骤;(1) 创建好数据库并导入,

QQ_188083800的博客 620

java版本鸿鹄ERP管理系统源码 Spring Cloud alibaba Spring Boot MybatisPlus Redis VUE3 ElementUI 微服务

3、采购退货:退货单管理:退货单号、产品、退货时间、供应商、仓库、创建人、关联订单、结算账户、退款状态:(未退款、部分退款、全部退款)、审核状态(未审核、已审核)、备注、搜索、重置、新增、导出、删除;2、采购入库:入库单管理(入库单号、产品、入库时间、供应商、仓库、创建人、关联订单、结算账户、付款状态(未付款、部分付款、全部付款)、审核状态(未审核、已审核)、备注、搜索、重置、新增、导出、删除;出库单列表:出库单号、产品信息、客户、出库时间、创建人、总数量、应收金额、已收金额、未收金额、审核状态、操作。

m0_72864708的博客 1033

SpringBoot+Vue物流管理系统开发实战

企业级应用开发中,前后端分离架构已成为主流技术方案。SpringBoot作为Java领域最流行的微服务框架,通过自动配置和Starter机制大幅简化了后端开发;Vue.js则以其响应式数据绑定和组件化特性,成为构建现代化前端界面的首选。这种技术组合在物流管理系统等业务场景中展现出显著优势,既能实现RESTful API的高效开发,又能保证用户界面的流畅交互。项目中整合MyBatis-Plus进行数据持久化、Spring Security处理权限认证、Element UI快速搭建管理界面等实践,完整呈现了全栈

weixin_30924087的博客 355
上一篇: 2021-06-11知乎热议:大专程序员究竟能不能进大厂,机率大吗?
下一篇: 2021-06-15Java为什么要支持方法重载?
Z134521
博客等级 码龄5年 0粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值