vue3 ts封装axios
时间: 2023-08-22 11:04:51 浏览: 102
你可以使用 TypeScript 来封装 Axios,以下是一个简单的示例:
首先,安装 axios 和 @types/axios 依赖:
```
npm install axios @types/axios
```
接下来,创建一个名为 `api.ts` 的文件,并在其中封装 Axios:
```typescript
import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
// 创建 Axios 实例
const instance: AxiosInstance = axios.create({
baseURL: 'https://api.example.com', // 设置基本的 API 地址
timeout: 5000, // 设置超时时间
});
// 请求拦截器
instance.interceptors.request.use(
(config: AxiosRequestConfig) => {
// 在请求发送之前做一些处理,例如添加请求头等
return config;
},
(error: any) => {
// 处理请求错误
return Promise.reject(error);
}
);
// 响应拦截器
instance.interceptors.response.use(
(response: AxiosResponse) => {
// 在响应返回之前做一些处理,例如解析响应数据等
return response; },
(error: any) => {
// 处理响应错误
return Promise.reject(error);
}
);
// 封装 GET 请求
export const get = async <T>(url: string, params?: any): Promise<T> => {
try {
const response = await instance.get<T>(url, { params });
return response.data;
} catch (error) {
throw new Error(error);
}
};
// 封装 POST 请求
export const post = async <T>(url: string, data?: any): Promise<T> => {
try {
const response = await instance.post<T>(url, data);
return response.data;
} catch (error) {
throw new Error(error);
}
};
// 其他请求方法的封装,例如 PUT、DELETE 等
export default instance;
```
现在,你可以在你的 Vue 组件中引入 `api.ts` 文件并使用封装好的请求方法:
```typescript
import { get, post } from './api';
// 在组件中使用 GET 请求
const fetchData = async () => {
try {
const data = await get<User[]>('/users');
console.log(data);
} catch (error) {
console.error(error);
}
};
// 在组件中使用 POST 请求
const postData = async () => {
try {
const data = await post<User>('/users', { name: 'John' });
console.log(data);
} catch (error) {
console.error(error);
}
};
interface User {
id: number;
name: string;
}
```
这样,你就成功地封装了 Axios,并且可以在 Vue3 TypeScript 项目中使用它进行网络请求了。当然,你还可以根据自己的需求进行进一步的封装和定制。
阅读全文