request.ts
import axios from 'axios';
// 创建请求实例
const instance = axios.create({
baseURL: import.meta.env.VITE_BASE_URL,
timeout: 300000, // 指定请求超时的毫秒数
withCredentials: false, // 表示跨域请求时是否需要使用凭证
});
// 前置拦截器(发起请求之前的拦截)
instance.interceptors.request.use(
(config) => {
// const token = getToken()
// if (token) {
// config.headers.token = token
// }
return config;
},
(error) => {
return Promise.reject(error);
}
);
// 后置拦截器(获取到响应时的拦截)
instance.interceptors.response.use(
(response) => {
// 根据你的项目实际情况来对 response 和 error 做处理
// 这里对 response 和 error 不做任何处理,直接返回
return response;
},
(error) => {
const { response } = error;
if (response && response.data) {
return Promise.reject(error);
}
const { message } = error;
console.error(message);
return Promise.reject(error);
}
);
/**
* post请求
*
* @param {string} url
* @param {object} data
* @param {object} params
*/
export const post = (url: string, data = {}, params = {}) => {
return instance({
method: 'post',
url,
data,
params,
});
};
/**
* get请求
*
* @param {string} url
* @param {object} params
*/
export const get = (url: string, params = {}) => {
return instance({
method: 'get',
url,
params,
});
};
/**
* put请求
*
* @param {string} url
* @param {object} data
* @param {object} params
*/
export const put = (url: string, data = {}, params = {}) => {
return instance({
method: 'put',
url,
params,
data,
});
};
/**
* delete请求
*
* @param {string} url
* @param {object} params
*/
export const _delete = (url: string, params = {}) => {
return instance({
method: 'delete',
url,
params,
});
};
export default instance;
user.ts
import { post } from '~/common/request';
import { HttpResult } from './../types/global.d';
import { loginVO } from '~/types/user';
export default class User {
static async login(data = {}): Promise<HttpResult<loginVO>> {
const res = await post('/user/login', data);
return res.data;
}
}
global.d.ts
export interface HttpResult<T> {
code: number;
message: string;
data: T;
exception: string;
}
user.d.ts
export interface loginVO {
userId: string;
username: string;
token: string;
expireTime: string;
}