vue3使用ts封装axios

编程入门 行业动态 更新时间:2024-10-09 18:17:51

vue3使用<a href=https://www.elefans.com/category/jswz/34/1771404.html style=ts封装axios"/>

vue3使用ts封装axios

 以下是使用 TypeScript 封装 Axios 的示例代码:

//axios.tsimport axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';// 自定义 API 响应类型
interface ApiResponse<T> {code: number;message: string;data: T;
}// 自定义错误类型
interface ApiError {code: number;message: string;
}// 创建自定义的 Axios 实例
const api: AxiosInstance = axios.create({baseURL: '', // 设置基础 URLtimeout: 5000, // 请求超时时间
});// 请求拦截器
api.interceptors.request.use((config: AxiosRequestConfig) => {// 在发送请求之前做一些处理,例如添加请求头等// config.headers['Authorization'] = 'Bearer token';return config;},(error: AxiosError) => {// 处理请求错误return Promise.reject(error);}
);// 响应拦截器
api.interceptors.response.use((response: AxiosResponse<ApiResponse<any>>) => {// 在这里对响应进行处理,例如处理错误状态码等const { code, message, data } = response.data;if (code === 0) {// 请求成功return data;} else {// 请求失败,抛出自定义的错误const error: ApiError = {code,message,};return Promise.reject(error);}},(error: AxiosError) => {// 处理响应错误return Promise.reject(error);}
);// 封装 GET 请求
export function get<T>(url: string, params?: any): Promise<T> {return api.get<ApiResponse<T>>(url, { params }).then((response: ApiResponse<T>) => response.data).catch((error: ApiError) => {throw new Error(error.message);});
}// 封装 POST 请求
export function post<T>(url: string, data?: any): Promise<T> {return api.post<ApiResponse<T>>(url, data).then((response: ApiResponse<T>) => response.data).catch((error: ApiError) => {throw new Error(error.message);});
}// 使用示例
get<User[]>('/users').then((users: User[]) => {// 处理获取到的用户数据}).catch((error: Error) => {// 处理错误});post<User>('/users', { name: 'John', age: 30 }).then((user: User) => {// 处理创建用户成功的响应}).catch((error: Error) => {// 处理错误});


在示例代码中,我们使用 TypeScript 创建了一个自定义的 Axios 实例 `api`,并在其中配置了请求拦截器和响应拦截器。我们还封装了 `get` 和 `post` 方法来发起 GET 和 POST 请求,并处理了响应数据和错误。

请注意,示例中的 `ApiResponse` 类型和 `ApiError` 类型是根据具体的 API 响应格式进行定义的,您可以根据自己的实际情况进行调整。此外,您还可以根据需要添加其他的封装方法,例如 PUT、DELETE 等。

希望这个示例能帮助您封装 Axios 并进行 TypeScript 开发。如有任何问题,请随时提问。

更多推荐

vue3使用ts封装axios

本文发布于:2023-11-16 19:08:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1631401.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:ts   axios

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!