vue3.0中的axios二次封装 您所在的位置:网站首页 ts对axios封装 vue3.0中的axios二次封装

vue3.0中的axios二次封装

2023-07-13 12:18| 来源: 网络整理| 查看: 265

vue项目中用的是aixos来进行请求,但是项目中接口请求比较多,而且vue3.0也不像vue2.x一样在入口文件引入后直接挂载到全局,比如这样:

import axios from 'axios' Vue.prototype.$axios = axios // 这是挂载到全局,$axios 是自己命名,按照自己的习惯来 // 使用就可以直接在需要用的页面直接调用 this.$axios.post('xxxx').then((res) => { console.log(res) })

这是vue2.x的挂载全局的写法,很方便。但是vue3.0中不支持直接挂载到全局,且vue3.0中更习惯在哪里使用在哪里引入,比如这样:

import axios from "axios" export default { setup() { axios.get('xxx').then((res)=>{ console.log(res); }) }, };

这样虽然方便一些,但是随着代码越来越多,接口也越来越多,使用起来还是很不方便的,而且也不方便管理,这时候就需要我们根据个人需求进行二次封装

1.首先可以在src目录下创建一个文件夹,用于放置文件

我个人习惯是先建一个用于放基准地址的文件夹,比如这样:

export default { local: { baseURL: 'https://2315312.com' }, test: { baseURL: 'https://test.com' }, prod: { baseURL: 'xxx' }, http: { baseURL: 'xxxxx' } }

因为在公司中有很多环境,比如开发环境,测试环境等等,基准地址都不一样,所以我个人习惯是专门有一个文件是 放基准地址的,这样便于管理

2.第二步就是对axios进行二次封装了

// 首先先引入aixos import axios from 'axios' // element引入文件 import { ElMessage } from 'element-plus' // 这是我放基准地址的文件 import env from './env' // 创建一个axios 实例 const api = axios.create({ baseURL: env.http.baseURL, // 基准地址 timeout: 5000 // 超时时间 }) // 请求拦截 api.interceptors.request.use((config) => { return config // 请求拦截里面的需求可以自己写,有的项目需要配置很多,有的很少,这里就 // 不放了 }, error => { Promise.reject(error) }) // 响应拦截 /** 响应拦截也是一样,最基本的可以把返回出来的一些数据做简单处理, 比如把请求回来的提示信息解构出来,给予提示,这样就不用在每次请求完成后单独去写 这里用的是element-ui 里面的提示 **/ api.interceptors.response.use((res) => { const { data: result, meta: { msg, status } } = res.data ElMessage({ message: msg, type: 'success', } return result }, error => { Promise.reject(error) }) // 最后导出 export default api

这就是axios最简单的一个封装了,而且我习惯于把请求也单独写一个文件

// 这里是封装好的aioxs import api from './api' // 登录 export const login = (data) => { return api({ url: 'login', method: 'POST', data }) }

这样使用时候就非常方便了,而且这只是最基本的封装,如果想要实现更多需求,就要你自己根据需求去封装了

像引入的比如env,api等等这些文件就是我自己创建的文件,文件名随你们喜好命名,不必要跟我一样。

最后,如果有哪里错误的地方,欢迎大佬指正,拜谢!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有