Vue3封装axios
3、在根目录下的src里创建创建封装文件request.js放在api文件夹里:src/api/request.js,request.js代码如下。
·
1、安装axios
npm install axios
2、安装qs
npm install qs
3、在根目录下的src里创建创建封装文件request.js放在api文件夹里:src/api/request.js,request.js代码如下
import axios from 'axios';
import QS from 'qs';
const api = axios.create({
baseURL: 'http://127.0.0.1:1008', // 所有请求的公共地址部分
timeout: 3000 // 请求超时时间 这里的意思是当请求时间超过5秒还未取得结果时 提示用户请求超时
})
axios.defaults.baseURL = 'http://127.0.0.1:1008';
axios.interceptors.request.use(
config => {
config.headers.token = sessionStorage.getItem('token');
return config;
},
error => {
return Promise.reject(error);
}
);
axios.interceptors.response.use(
response => {
if (response.status === 200) {
return Promise.resolve(response);
} else {
return Promise.reject(response);
}
},
error => {
if (error.response && error.response.status) {
switch (error.response.status) {
case 401:
//异常处理
break;
case 403:
break;
case 404:
break;
default:
return Promise.reject(error.response);
}
}
return Promise.reject(error);
}
);
const $get = (url, params) => {
return new Promise((resolve, reject) => {
api.get(url, { params })
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err);
});
});
};
const $post = (url, params) => {
return new Promise((resolve, reject) => {
api.post(url, QS.stringify(params), {
responseType: 'json', // 设置响应类型为json
}).then(res => {
resolve(res.data);
})
.catch(err => {
reject(err);
});
});
};
export default {
install: (app) => {
app.config.globalProperties.$get = $get;
app.config.globalProperties.$post = $post;
app.config.globalProperties.$axios = axios;
}
};
4、在main.js引入,代码如下:
import './assets/main.css'
import { createApp } from 'vue'
import http from './api/request' //这一段
import App from './App.vue'
const app = createApp(App)
app.use(http) //还有这一段
app.mount('#app')
5、在使用的组件里使用方法如下:
methods: {
test() {
this.$post('/ksai/chat/getchatlist', { data: 'example' }).then(data => {
console.log(data); // 在这里处理返回的数据
}).catch(error => {
console.error(error); // 在这里处理错误
})
}
}
这样就大功告成啦!!!
更多推荐
已为社区贡献2条内容
所有评论(0)