vue axios的二次封装

1、axios的二次封装

BiliBili作者原地址,多多支持

  npm i axios    //下载axios

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

vue axios的二次封装
  1. 先在 config文件夹下建立一个 index.js;具体代码如下
export default{
    baseUrl:{
        dev: "http://localhost:8082/mhy",   //开发环境
        pro: "http://xxx.xx.xx.xx:8082/mhy",    //上线环境
    }
}

当然我这里是因为我主要写后端springboot,就没有使用什么第三方前端的请求工具
2. 在 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)

vue axios的二次封装
4. 然后看看具体怎么使用 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'

vue axios的二次封装
5. 当然最后你也可以全局注册一下,然后直接通过proxy调用,也很方便,这里就不多展示了

Original: https://www.cnblogs.com/shuisanya/p/16630320.html
Author: 水三丫
Title: vue axios的二次封装

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581456/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 终于知道 Shell 中单引号双引号的区别了

    在编写 shell 脚本或输入命令时,你可能已经注意到大多数命令都可以使用单引号 或双引号, 这不仅适用于 shell 脚本,而且适用于所有 Bash 命令, 但是两种类型的引号以…

    Linux 2023年6月13日
    083
  • 软件测试基础理论(2)

    一, 为什么要进行软件测试 为了通过软件&amp…

    Linux 2023年6月7日
    0114
  • Sqlite_入门命令

    新建库 .open DATA_BASE;新建表 create table LIST_NAME(DATA);语法: NAME 关键字… 新建数据 insert into …

    Linux 2023年6月7日
    071
  • CentOS7.4安装docker

    1、安装环境 此处在Centos7进行安装,可以使用以下命令查看CentOS版本 lsb_release -a 在 CentOS 7安装docker要求系统为64位、系统内核版本为…

    Linux 2023年5月27日
    092
  • 【微服务】Nacos初体验

    SpringCloud – Nacos初体验 😄生命不息,写作不止🔥 继续踏上学习之路,学之分享笔记👊 总有一天我也能像各位大佬一样🏆 一个有梦有戏的人 @怒放吧德德🌝…

    Linux 2023年6月6日
    0118
  • 国产银河麒麟Kylin V10操作系统-如何配置Win+E快捷键打开“我的电脑”

    之前一直使用Windows操作系统,习惯了使用Win+E打开”我的电脑(资源管理器)”。 最近切换到使用国产银河麒麟Kylin V10操作系统,也想在麒麟操…

    Linux 2023年6月14日
    0210
  • PySimpleGUI 踩坑记

    最近在写一些处理芯片数据的代码,想给小伙伴们用,就想到写个GUI的页面,正好有人推荐使用PySimpleGUI, 首次使用就遇到了坑: 之前没有加try,运行的时候直接报错 inv…

    Linux 2023年6月14日
    091
  • docker Redis 安裝路徑

    /usr/local/etc posted @2022-01-14 17:35 刘大飞 阅读(20 ) 评论() 编辑 Original: https://www.cnblogs….

    Linux 2023年5月28日
    0114
  • [LINUX] Arch Linux 硬盘拷贝式装系统+新增 home 分区

    前言 1. 实操 1.1 整个磁盘拷贝 1.2 创建 home 分区 1.3 修改 fstab 实现自动挂载 2. 涉及到的知识点 2.1 fstab 2.2 dd 命令 2.3 …

    Linux 2023年5月27日
    0185
  • shell脚本

    1、什么是shell 什么是shell ? Shell(外壳) 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。 Shell 既是一种命令语言, 又是一种程序设计语…

    Linux 2023年5月27日
    0102
  • VMware Workstation 16.2 Pro for Linux SLIC 2.6 & Unlocker

    macOS Unlocker,支持 macOS Monterey 请访问原文链接:VMware Workstation 16 Pro Unlocker & OEM BIOS…

    Linux 2023年5月27日
    093
  • springboot分析——与其他组件的整合(JPA规范/atomikos/redis)

    一:与JPA规范整合 jpa是一套orm的规范,提供api接口,hirebnate就是对jpa的一套实现,下面我们看看springboot如何 与jpa整合 1:添加依赖和配置 j…

    Linux 2023年5月28日
    0115
  • python操作MySQL;MySQL补充知识

    目录 1.python操作MySQL 2.SQL注入及解决方式 3.二次确认 4.修改表SQL语句补充 5.视图 6.触发器 7.事务 8.存储过程 9.函数 10.流程控制 11…

    Linux 2023年6月7日
    0109
  • logstash写入文件慢的问题排查记录

    终于找到根本原因了!!!!! logstash部署到k8s集群内部的,当所在节点的CPU资源被其他应用抢占时,logstash的处理速度就会降低 问题现象 logstash从kaf…

    Linux 2023年6月14日
    0173
  • Macbook pro 2015-mid 15寸 安装Debian时所需无线网卡驱动

    https://pan.baidu.com/s/1o1oUZhK17fpgxpwH6bBkRQ?pwd=6kpt 把该文件放到u盘的firmware/目录下即可。 给自己留个备份,…

    Linux 2023年6月6日
    0134
  • Linux 搭建Apollo

    简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用…

    Linux 2023年6月14日
    0124
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球