vue axios二次封装的详细解析

 更新时间:2022年09月06日 11:07:49   作者:水三丫  
这篇文章主要介绍了vue axios二次封装的详细解析,文章围绕主题展开详细的内容戒杀,具有一定的参考价值,需要的小伙伴可以参考一下

axios的二次封装

视频讲解

  npm i axios    //下载axios

首先创建两个文件夹在src目录下;api和config

先在config文件夹下建立一个index.js;具体代码如下:

export default{
baseUrl:{
dev: "http://localhost:8082/mhy",	//开发环境
pro: "http://xxx.xx.xx.xx:8082/mhy",	//上线环境
}
}

当然我这里是因为我主要写后端springboot,就没有使用什么第三方前端的请求工具

api文件夹下建立一个axios.js;对axios进行二次封装;

import axios from "axios"
import config from "@/config"

// const baseUrl = process.env.NODE_ENV === 'development' ? config.baseUrl.dev:config.baseUrl.pro
const baseUrl = config.baseUrl.pro
class HttpRequest{
    //构造器
    constructor(baseUrl){
        this.baseUrl = baseUrl
    }
    //请求路径设置
    getInsideConfig(){
        const config = {
            baseURL:this.baseUrl,
            Header:{}
        }
        return config
    }

    //添加拦截器
    interceptors(instance){
        // 添加请求拦截器
        instance.interceptors.request.use(function (config) {
            // 在发送请求之前做些什么
            const token = localStorage.getItem("Accept-Token");
            if(token !== null && token !== ""){
                config.headers["Accept-Token"] = token;
            }
            return config;
        }, function (error) {
            // 对请求错误做些什么
            // console.log('添加请求拦截器 请求错误')
            return Promise.reject(error);
        });

        // 添加响应拦截器
        instance.interceptors.response.use(function (response) {
            // 对响应数据做点什么
            // console.log('添加请求拦截器 响应')
            return response;
        }, function (error) {
            // 对响应错误做点什么
            // console.log('添加请求拦截器 响应错误')
            return Promise.reject(error);
        });
    }
    // 二次封装的请求
    request(options) {
        const instance = axios.create()
        options = {...this.getInsideConfig(),...options}
        this.interceptors(instance)
        return instance(options)
    }

}
export default new HttpRequest(baseUrl)

最后在api文件夹下创建你需要调用的api,当然你可以写在一个里面,也可以不同模块分开写

我这里是分开写的:

然后看看具体怎么使用

fileApi.js

import axios from "./axios";

// 上传文件图片
export const uploadImgAPI = (param) => {
    return axios.request({
        url: `/uploadImg/${param.id}`,
        method: "post",
        data: param.formData
    })
}
// 删除一个文件
export const deleteImgAPI = (param) => {
    return axios.request({
        url: `/deleteImg`,
        method: "post",
        data: param
    })
}

简单的写一个;在组件中引入就可以使用了

import { deleteImgAPI, uploadImgAPI } from '@/api/fileApi'

当然最后你也可以全局注册一下,然后直接通过proxy调用,也很方便,

到此这篇关于vue axios二次封装的详细解析的文章就介绍到这了,更多相关vue axios二次封装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql中null(IFNULL,COALESCE和NULLIF)相关知识点总结

    mysql中null(IFNULL,COALESCE和NULLIF)相关知识点总结

    这篇文章主要介绍了mysql中null(IFNULL,COALESCE和NULLIF)相关知识点,结合实例形式总结分析了mysql中关于null的判断、使用相关操作技巧与注意事项,需要的朋友可以参考下
    2019-12-12
  • MYSQL错误:Can’t open file: ‘×××.MYI’ (errno: 145)修复方法

    MYSQL错误:Can’t open file: ‘×××.MYI’ (errno: 14

    这个错误是典型的mysql表受损造成的,解决的办法就是修复表,这个问题也是mysql经常容易出现的,mysql表和索引损坏的几率很大,但是修复也很方便
    2011-01-01
  • mysql 5.6 压缩包版安装方法

    mysql 5.6 压缩包版安装方法

    这篇文章主要为大家详细介绍了mysql 5.6 压缩包版安装方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • MySQL视图中如何使用IF和CASE语句

    MySQL视图中如何使用IF和CASE语句

    这篇文章主要介绍了MySQL视图中如何使用IF和CASE语句问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • MySQL的InnoDB扩容及ibdata1文件瘦身方案完全解析

    MySQL的InnoDB扩容及ibdata1文件瘦身方案完全解析

    在使用InnoDB存储引擎后,MySQL的ibdata1文件常常会占据大量存储空间,这里我们就为大家带来MySQL的InnoDB扩容及ibdata1文件瘦身方案完全解析:
    2016-06-06
  • MySQL ERROR 1045 (28000): Access denied for user ''root''@''localhost'' (using password: NO) 的原因分解决办法

    MySQL ERROR 1045 (28000): Access denied for user ''root''@''

    这篇文章主要介绍了MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 的原因分解决办法的相关资料,需要的朋友可以参考下
    2016-05-05
  • Navicat Premium远程连接MySQL数据库的方法

    Navicat Premium远程连接MySQL数据库的方法

    这篇文章主要介绍了Navicat Premium远程连接MySQL数据库的方法,本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • mysql binlog占用大量磁盘空间的解决方法

    mysql binlog占用大量磁盘空间的解决方法

    MySQL binlog(Binary Log)是MySQL数据库的一种重要组件,用于记录所有对数据库的更改操作,当MySQL服务器接收到对数据库的写入请求并成功执行后,这些更改会被写入binlog,本文给大家介绍了mysql binlog占用大量磁盘空间的解决方法,需要的朋友可以参考下
    2024-06-06
  • mysql查询的时候给字段赋默认值操作

    mysql查询的时候给字段赋默认值操作

    这篇文章主要介绍了mysql查询的时候给字段赋默认值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Mysql默认设置的危险性分析

    Mysql默认设置的危险性分析

    一.mysql默认的授权表二.缺乏日志能力 三.my.ini文件泄露口令 四.服务默认被绑定全部的网络接口上 五.默认安装路径下的mysql目录权限
    2008-09-09

最新评论