vue3 ts 封装axios
时间: 2023-09-19 13:11:13 浏览: 106
vue+ts下对axios的封装实现
在Vue 3中使用TypeScript封装Axios,可以按照以下步骤进行操作:
1. 首先,安装`axios`和`@types/axios`依赖:
```bash
npm install axios @types/axios
```
2. 创建一个新的Axios实例并进行封装。在项目的根目录下创建一个`axios.ts`文件,并在其中编写以下代码:
```typescript
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
// 创建一个自定义的Axios实例
const instance: AxiosInstance = axios.create({
baseURL: 'http://api.example.com', // 根据你的实际情况设置baseURL
timeout: 5000, // 请求超时时间
});
// 请求拦截器
instance.interceptors.request.use(
(config: AxiosRequestConfig) => {
// 在发送请求之前做些什么
// 比如添加token等
return config;
},
(error: any) => {
// 对请求错误做些什么
return Promise.reject(error);
}
);
// 响应拦截器
instance.interceptors.response.use(
(response: AxiosResponse) => {
// 对响应数据做些什么
return response.data;
},
(error: any) => {
// 对响应错误做些什么
return Promise.reject(error);
}
);
export default instance;
```
3. 将封装好的Axios实例导入到需要使用的组件中进行调用。例如,在一个`UserService.ts`文件中,你可以这样使用:
```typescript
import axios from '@/axios';
export function getUserInfo(userId: number) {
return axios.get(`/user/${userId}`);
}
export function updateUserProfile(userId: number, profile: any) {
return axios.put(`/user/${userId}`, profile);
}
// 其他接口请求方法...
```
现在,你就可以在你的Vue 3组件中使用这些封装好的Axios请求方法了:
```typescript
import { getUserInfo } from '@/services/UserService';
export default {
mounted() {
getUserInfo(123)
.then((response) => {
// 处理响应数据
})
.catch((error) => {
// 处理错误
});
},
};
```
通过这种方式,你可以更好地封装和管理Axios实例,并在整个项目中重复使用定义的请求方法。
阅读全文