import axios, { AxiosInstance, AxiosResponse, AxiosError } from 'axios'
// 定义返回数据类型
interface ResponseData {
code: number
message: string
data: any
}
// 定义请求参数类型
interface RequestOptions {
params?: object
data?: object
}
// 创建 Axios 实例
const service: AxiosInstance = axios.create({
baseURL: 'http://api.example.com',
timeout: 5000,
})
// 请求拦截器
service.interceptors.request.use(
(config) => {
// 在请求发送之前可以在此处添加 token 等信息
return config
},
(error) => {
return Promise.reject(error)
}
)
// 响应拦截器
service.interceptors.response.use(
(response: AxiosResponse<ResponseData>) => {
// 请求成功时的处理
const res = response.data
if (res.code !== 200) {
// 处理错误
} else {
return res.data
}
},
(error: AxiosError) => {
// 请求失败时的处理
return Promise.reject(error)
}
)
// 封装请求方法
const request = (url: string, method: string, options: RequestOptions) => {
return service({
url,
method,
params: options.params,
data: options.data,
})
}
// 导出请求方法
export default {
get(url: string, options: RequestOptions) {
return request(url, 'get', options)
},
post(url: string, options: RequestOptions) {
return request(url, 'post', options)
},
put(url: string, options: RequestOptions) {
return request(url, 'put', options)
},
delete(url: string, options: RequestOptions) {
return request(url, 'delete', options)
},
}