vue axios二次封装的详细解析

作者:水三丫 时间:2024-01-18 01:43:44 

axios的二次封装

视频讲解

npm i axios    //下载axios

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

vue axios二次封装的详细解析

先在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,当然你可以写在一个里面,也可以不同模块分开写

我这里是分开写的:

vue axios二次封装的详细解析

然后看看具体怎么使用

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二次封装的详细解析

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

来源:https://www.cnblogs.com/shuisanya/p/16630320.html

标签:vue,axios,封装
0
投稿

猜你喜欢

  • 彻底理解Python中的yield关键字

    2021-02-23 16:31:42
  • python编写简易聊天室实现局域网内聊天功能

    2023-08-30 07:45:52
  • Python实现自动签到脚本的示例代码

    2021-07-07 14:08:37
  • Python enumerate遍历数组示例应用

    2023-06-10 16:59:26
  • Python函数式编程之返回函数实例详解

    2021-10-31 03:46:26
  • 如何利用Python连接MySQL数据库实现数据储存

    2024-01-20 08:46:33
  • 通过模版字符串及JSON数据进行目标内容整理的一个小方法

    2010-01-12 16:55:00
  • 基于Python中numpy数组的合并实例讲解

    2023-01-23 18:17:26
  • Selenium 模拟浏览器动态加载页面的实现方法

    2023-06-04 11:06:54
  • Oracle中获取执行计划的几种方法分析

    2023-07-17 15:18:31
  • Python 文件操作方法总结

    2023-11-29 11:36:28
  • Python字典推导式将cookie字符串转化为字典解析

    2023-02-26 14:22:17
  • Python使用pymongo库操作MongoDB数据库的方法实例

    2023-06-04 06:20:22
  • JavaScript实现烟花特效(面向对象)

    2024-02-26 22:44:50
  • FrontPage2003 中网页布局功能的应用

    2007-11-18 14:43:00
  • python绘制简单直方图的方法

    2023-06-23 19:54:50
  • Python中实现一行拆多行和多行并一行的示例代码

    2021-05-20 12:32:26
  • Python网络编程之TCP套接字简单用法示例

    2023-03-10 05:42:10
  • Python实现爬取马云的微博功能示例

    2021-11-14 13:10:53
  • mysql 数据表中查找重复记录

    2024-01-18 14:32:46
  • asp之家 网络编程 m.aspxhome.com