我这边response拦截器返回的是response.data
import Axios, { AxiosRequestConfig, AxiosResponse } from 'axios'
import config from '@/utils/config'
import { message } from 'ant-design-vue';
const request = Axios.create({
baseURL: config.baseUrl,
timeout: 5000,
headers: {
Authorization: ''
}
})
// 请求拦截器
request.interceptors.request.use((config: AxiosRequestConfig) => {
return config
}, (err) => {
message.error(err.toString())
return Promise.reject(err)
})
// 请求拦截器
request.interceptors.response.use((response: AxiosResponse<{ code: number, data: string }>) => {
if (response.status !== 200) {
message.error('请求出错')
}
return Promise.resolve(response.data)
}, (err: any) => {
message.error(err.toString())
return Promise.reject(err.toString())
})
export default request
为什么在别的地方调用的时候报错呢
改一下
axios
的类型声明即可,src
下添加axios.d.ts
(名字随你喜欢):这样子可以使得
axios
上的方法能够根据泛型来控制返回类型:当然你可以直接把默认类型定义在
.d.ts
文件里,只要把里面的<T = any>
的any
改成你想要的默认类型即可。比如把 Get 的改成这样后: