axios的二次封装(Vue)

api.js

import {get, post} from "./index";


/**
* 用户接口
* @param data
* @returns {AxiosPromise}
*/
export const userApi = {
/**
* 登录
* @param data
* @returns {AxiosPromise}
*/
login(data) {
return post('/login.php', {
data
}).then((res) => {
if (res.ret === 200) {
localStorage.setItem('userInfo', JSON.stringify(res.data));
return Promise.resolve(res);
} else {
this.$swal({
title: "账号或密码错误!",
icon: "error",
});
}
}).catch(() => {
})
},
}

index.js
import instance from "./instance";

function get(url, options){
return instance({
method: "get",
url,
...options
})
}

function post(url,options){
return instance({
method: "post",
url,
...options
})
}

export {
get,
post,
}

instance.js
import Vue from "vue";
import axios from "axios";
import Qs from 'qs'

Vue.prototype.$http=axios;


const instance = axios.create({
// baseURL: 'https://some-domain.com/api/',
timeout: 10000,
headers: {
post:{
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
}

},
transformRequest: [function (data) {
// 对发送的 data 进行任意转换处理
let params = null;
if (data instanceof FormData || data instanceof URLSearchParams) {
params = data;
} else {
params = Qs.stringify(data);
// console.log(data);
}

return params;
}],
});

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
let userInfo = null;

  //动态获取请求头并赋值
if (localStorage.getItem("userInfo")) {
userInfo = JSON.parse(localStorage.getItem("userInfo"));
config.headers.phone=userInfo.phone;
config.headers.token=userInfo.token;
}


// 在发送请求之前做些什么
// console.log(config.url);
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
let data = null;
if (response.data.ret === 200) {
data = response.data;
} else {
data = response.data.msg;
}
// console.log(response);
return data;
}, function (error) {
console.dir(error.message);
return Promise.reject(error.message);
});


// axios.defaults.baseURL='';

export default instance
 




 

posted @ 2021-11-04 17:15  aquackw  阅读(183)  评论(0)    收藏  举报