TS类型-axios二次封装

补充:后端返回的数据下载json2ts插件,使用ctrl+Alt+v快捷键生成ts类型

在untils/request.ts中封装函数

// 后端返回的接口数据格式

 

export interface ResponseData<T = unknown> {

    code: string;

    msg: string;

    result: T;

}

export const http = <T>(method: Method, url: string, submitData?: unknown) => {

  return instance.request< ResponseData<T>>({

    url,

    method,

    // 🔔 自动设置合适的 params/data 键名称,如果 method 为 get 用 params 传请求参数,否则用 data

    [method.toUpperCase() === "GET" ? "params" : "data"]: submitData,

  });

};

 

 

 函数调用

 const res= await http<CategoryList>("GET",'/home/category/head')

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 3和TypeScript的Axios二次封装可以提供更好的代码可维护性和可扩展性。下面是一个示例: 首先,你需要安装axios和@types/axios(用于TypeScript类型定义): ``` npm install axios npm install @types/axios ``` 然后,在你的项目中创建一个`api`文件夹,并在其中创建一个`http.ts`文件,用于封装Axios。 ```typescript import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'; // 创建一个Axios实例 const instance: AxiosInstance = axios.create({ baseURL: 'http://your-api-base-url.com', // 替换为你的API基础URL timeout: 5000, // 设置请求超时时间 }); // 请求拦截器 instance.interceptors.request.use( (config: AxiosRequestConfig) => { // 在发送请求之前做一些处理,例如添加请求头等 // config.headers['Authorization'] = 'Bearer ' + token; return config; }, (error) => { // 处理请求错误 return Promise.reject(error); } ); // 响应拦截器 instance.interceptors.response.use( (response: AxiosResponse) => { // 对响应数据进行处理 // 可以根据实际情况进行全局错误处理、数据转换等 return response.data; }, (error) => { // 处理响应错误 return Promise.reject(error); } ); export default instance; ``` 接下来,在需要使用Axios的地方导入`http.ts`文件,并使用封装好的Axios实例进行网络请求。 ```typescript import http from '@/api/http'; // 示例API请求方法 export const getUser = () => { return http.get('/user'); }; export const createUser = (data: any) => { return http.post('/user', data); }; // 其他API请求方法... ``` 这样,你就可以在Vue组件或其他地方使用这些封装好的API请求方法了。 ```typescript import { getUser } from '@/api/user'; export default { created() { this.fetchUser(); }, methods: { async fetchUser() { try { const user = await getUser(); // 处理返回的用户数据 } catch (error) { // 处理请求错误 } }, }, }; ``` 这就是Vue 3和TypeScript的Axios二次封装的基本示例。你可以根据你的项目需求进一步扩展和优化这个封装

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值