Vue3 TS封装axios
时间: 2023-09-11 13:13:22 浏览: 104
你可以按照以下步骤来封装 Axios 在 Vue 3 中使用 TypeScript:
1. 首先,安装 Axios 和 TypeScript 定义文件(axios 和 @types/axios)。
```shell
npm install axios @types/axios
```
2. 在项目中创建一个 `services` 文件夹,并在其中创建一个名为 `api.ts` 的文件。这个文件将包含 Axios 的封装代码。
3. 在 `api.ts` 文件中,导入 Axios 和相关的 TypeScript 定义。
```typescript
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';
```
4. 创建一个自定义的 Axios 实例,并定义一些默认配置。
```typescript
const api = axios.create({
baseURL: 'https://api.example.com', // 根据你的实际需求修改
相关问题
vue3 ts封装axios
你可以使用 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 项目中使用它进行网络请求了。当然,你还可以根据自己的需求进行进一步的封装和定制。
vue3 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实例,并在整个项目中重复使用定义的请求方法。
阅读全文