axios封装(http.ts)
import axios from 'axios';
import baseUrl from './baseUrl';
const instance = axios.create({ timeout: 5000 });
if (import.meta.env.DEV) {
instance.defaults.baseURL = baseUrl;
} else {
instance.defaults.baseURL = '/';
}
instance.defaults.headers.get['Content-Type'] = 'application/json;charset=UTF-8';
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
instance.interceptors.request.use((config) => {
config.headers.token = '';
const newConfig = {
...config,
params: config.params || {},
};
return newConfig;
});
instance.interceptors.response.use((res) => {
if (res.status === 200) return Promise.resolve(res);
if (res.status !== 200) return Promise.reject(res);
(err) => {
if (err.response.status) {
switch (err.response.status) {
case 5002:
break;
case 403:
break;
case 404:
break;
default:
}
}
return Promise.reject(err.response);
};
});
export default instance;
请求方法封装(apiFn.ts)
import instance from './httpFn';
export async function post(url, params) {
try {
const { data } = await instance.post(url, params);
return Promise.resolve(data);
} catch (error) {
console.log(error);
return Promise.reject(error);
}
}
export async function get(url, params) {
try {
const { data } = await instance.get(url, { params });
return Promise.resolve(data);
} catch (error) {
console.log(error);
return Promise.reject(error);
}
}
export async function postBody(url, params) {
try {
const { data } = await instance({
url: url,
data: params,
method: 'post',
headers: {
'Content-Type': 'application/json',
},
});
return Promise.resolve(data);
} catch (error) {
console.log(error);
return Promise.reject(error);
}
}
export async function form(url: string, form: FormData) {
try {
const { data } = await instance({
url,
data: form,
method: 'post',
headers: {
'Content-Type': 'multipart/form-data',
},
});
return Promise.resolve(data);
} catch (error) {
console.log(error);
return Promise.reject(error);
}
}