当前位置:   article > 正文

vue3.0中的axios二次封装_vue3 axios二次封装

vue3 axios二次封装

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

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

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

  1. <script>
  2. import axios from "axios"
  3. export default {
  4. setup() {
  5. axios.get('xxx').then((res)=>{
  6. console.log(res);
  7. })
  8. },
  9. };
  10. </script>

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

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

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

  1. export default {
  2. local: {
  3. baseURL: 'https://2315312.com'
  4. },
  5. test: {
  6. baseURL: 'https://test.com'
  7. },
  8. prod: {
  9. baseURL: 'xxx'
  10. },
  11. http: {
  12. baseURL: 'xxxxx'
  13. }
  14. }

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

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

  1. // 首先先引入aixos
  2. import axios from 'axios'
  3. // element引入文件
  4. import { ElMessage } from 'element-plus'
  5. // 这是我放基准地址的文件
  6. import env from './env'
  7. // 创建一个axios 实例
  8. const api = axios.create({
  9. baseURL: env.http.baseURL, // 基准地址
  10. timeout: 5000 // 超时时间
  11. })
  12. // 请求拦截
  13. api.interceptors.request.use((config) => {
  14. return config // 请求拦截里面的需求可以自己写,有的项目需要配置很多,有的很少,这里就
  15. // 不放了
  16. }, error => {
  17. Promise.reject(error)
  18. })
  19. // 响应拦截
  20. /**
  21. 响应拦截也是一样,最基本的可以把返回出来的一些数据做简单处理,
  22. 比如把请求回来的提示信息解构出来,给予提示,这样就不用在每次请求完成后单独去写
  23. 这里用的是element-ui 里面的提示
  24. **/
  25. api.interceptors.response.use((res) => {
  26. const { data: result, meta: { msg, status } } = res.data
  27. ElMessage({
  28. message: msg,
  29. type: 'success',
  30. }
  31. return result
  32. }, error => {
  33. Promise.reject(error)
  34. })
  35. // 最后导出
  36. export default api

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

  1. // 这里是封装好的aioxs
  2. import api from './api'
  3. // 登录
  4. export const login = (data) => {
  5. return api({
  6. url: 'login',
  7. method: 'POST',
  8. data
  9. })
  10. }

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/218991
推荐阅读
相关标签
  

闽ICP备14008679号