安装插件
使用pnpm
or cnpm
or cnpm
安装axios
插件
创建封装请求的Ts或Js文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| import axios from 'axios'; import { ElMessage } from 'element-plus'; import useUserStroe from '@/store/modules/user';
let request = axios.create({ baseURL: import.meta.env.VITE_APP_BASE_API, timeout: 5000 });
request.interceptors.request.use((config) => { const userStore = useUserStroe(); if (userStore.token) { config.headers.token = userStore.token; } return config; })
request.interceptors.response.use((response) => { return response.data }, (error) => { let message = ''; let status = error.response.status; switch (status) { case 401: message = 'TOKEN过期' break; case 403: message = '无权访问' break; case 404: message = '请求地址错误' break; case 500: message = '服务器错误' break; default: message = '网络出现错误' break; } ElMessage({ type: 'error', message }) return Promise.reject(error) })
export default request;
|
使用封装后的请求
1 2 3 4 5 6 7 8 9
| import request from "@/utils/request";
enum API { LOGIN_URL = '/admin/acl/index/login', }
export const login = (data: loginFomData) => request.post<any, loginResponseData>(API.LOGIN_URL, data);
|
在需要使用接口的页面引入
1 2 3 4 5 6 7 8 9 10
| import { login } from "@/api/user";
async userLogin(data: loginFomData) { let result: loginResponseData = await login(data); if (result.code === 200) { } else {} },
|