1. request.ts
import axios, { AxiosInstance, AxiosResponse } from 'axios';
const request = axios.create({
baseURL: '/api'
});
// 添加请求拦截器
request.interceptors.request.use(function (config) {
return config;
}, function (error) {
return Promise.reject(error);
});
// 添加响应拦截器
request.interceptors.response.use(function (response) {
return response;
}, function (error) {
return Promise.reject(error);
});
const http = {
get<T>(url: string, params?: any, config?: {}): Promise<T> {
return new Promise((resolve, reject) => {
request
.get<T>(url, { params,...config } )
.then((res: AxiosResponse<T>) => {
resolve(res.data);
})
.catch((error) => {
reject(error);
});
});
},
post<T>(url: string, data?: any, config?: {}): Promise<T> {
return new Promise((resolve, reject) => {
request
.post<T>(url, data, config)
.then((res: AxiosResponse<T>) => {
resolve(res.data);
})
.catch((error) => {
reject(error);
});
});
},
};
export default http;
api文件:
import http from "@utils/request";
import { UserRuleForm , PhoneCodeForm , PhoneRuleForm } from '@interface/login'
interface ILoginRequest{
code:string
msg:string
data?:string | null
}
//图形验证码
export const captchaImage = ( data:{
key:string
} ):Promise<ArrayBuffer>=>{
return http.get<ArrayBuffer>('接口地址',data,{responseType:'arraybuffer'});
}
//用户登录
export const loginByJson = ( data:UserRuleForm ):Promise<ILoginRequest>=>{
return http.post<ILoginRequest>('接口地址',data)
}
//登录动态验证码
export const loginCaptcha = ( data:PhoneCodeForm ):Promise<ILoginRequest>=>{
return http.get<ILoginRequest>('接口地址',data)
}
//手机验证码登录
export const loginByMobile = ( data:PhoneRuleForm ):Promise<ILoginRequest>=>{
return http.post<ILoginRequest>('接口地址',data)
}