vue cli3 axios封装(拦截添加token,自定义方法)

8 篇文章 0 订阅
首先在项目src下创建目录 src --> axios --> index.js(目录名字可以自己改,引入的时候注意就可以)
/* src --> axios --> index.js */
import axios from "axios";
/* 根据环境不同 选择url*/
let BackUrl = null;
let BasiUrl  = process.env.NODE_ENV;
/* 开发环境*/
if(BasiUrl === 'development') {
  BackUrl = '/api'
}else if(BasiUrl === 'production') {
/* 打包环境*/
  BackUrl = 'https://xxxx.com/api/'
}
// 2.请求拦截器
axios.interceptors.request.use(config => {
  //发请求前做的一些处理,数据转化,配置请求头,设置token,设置loading等,根据需求去添加
  // config.data = JSON.stringify(config.data); //数据转化,也可以使用qs转换
  config.headers = {
    "Content-Type": "application/json" //配置请求头
  };
  //const token = sessionStorage.getItem('');//这里取token之前,你肯定需要先拿到token,存一下
  //if(token){
  //config.params = {'token':token} //如果要求携带在参数中
  //config.headers.token= token; //如果要求携带在请求头中
  //}
  return config;
}, error => {
  Promise.reject(error);
});
/**
 *自定义方法
 * @param {string} type 类型 'get' 或 'post'
 * @param {string} url 请求地址
 * @param {object} data 发送的数据
 * @returns {Promise<unknown>} 返回请求相应
 */
function vaildInterfaceW(type,url,data){
  return new Promise((resolve,reject)=>{
    var obj = {
      method: type, //请求的类型
      url:url, //请求地址
      data:data
    }
    //返回axios的基础方法
     axios(obj).then(res => {
       resolve(res.data)
    }).catch(error => {
       reject(error)
       });
  });
}
export { vaildInterfaceW };

有两种使用方法

1,全局引入,写在vue的原型上面

//main.js
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import axios from "./axios";//这里是文件目录,根据自己创建名字修改
import { vaildInterfaceW } from "./axios";
const app = createApp(App);
//自定义封装axios方法
app.config.globalProperties.vaildInterfaceW = vaildInterfaceW;
app.use(store).use(router).mount("#app");
this.vaildInterfaceW('post','/api',{
 name:'123'
    }).then(res=>{
      console.log(res);
    }).catch(error =>{
      console.log(error);
    });

2,按需引入

import { vaildInterfaceW } from "./axios";
vaildInterfaceW('post','/api',{
 name:'123'
    }).then(res=>{
      console.log(res);
    }).catch(error =>{
      console.log(error);
    });
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3中使用axios进行拦截器的封装方法如下: 首先,安装axios和@vue/composition-api依赖包: ``` npm install axios @vue/composition-api ``` 然后,在你的项目中创建一个axios.js文件,用于封装axios拦截器逻辑: ```javascript import axios from 'axios'; import { ref } from '@vue/composition-api'; const instance = axios.create({ baseURL: 'https://api.example.com' // 设置请求的基础URL }); // 创建一个ref类型的变量,用于存储当前正在进行的请求数量 const loadingCount = ref(0); // 请求拦截器 instance.interceptors.request.use( config => { // 在请求发送之前,对config进行一些处理,比如添加token等 loadingCount.value++; return config; }, error => { return Promise.reject(error); } ); // 响应拦截器 instance.interceptors.response.use( response => { // 在响应数据返回之前,对response进行一些处理,比如统一错误处理等 loadingCount.value--; return response; }, error => { loadingCount.value--; return Promise.reject(error); } ); export default instance; ``` 接下来,在你的组件中使用该封装好的axios实例: ```javascript import axios from '@/axios'; export default { setup() { // 发起一个请求示例 const fetchData = async () => { try { const response = await axios.get('/data'); console.log(response.data); } catch (error) { console.error(error); } }; return { fetchData }; } }; ``` 这样,你就成功在Vue 3中封装axios拦截器。在请求发起前和响应返回后的拦截器中,你可以根据需要做一些通用的处理,比如添加认证信息、统一错误处理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值