当前位置: 首页 > article >正文

vue3项目axios最简单封装 - ajax请求封装

效果图

官网

起步 | Axios中文文档 | Axios中文网基于promise可以用于浏览器和node.js的网络请求库https://www.axios-http.cn/docs/intro

步骤

  1. 创建vue3项目
    npm create vue@latest
     
  2. 安装axios
    npm install axios
     
  3. 封装
    创建/src/utils/axios.js
    /**
     * axios请求封装
     * https://rudon.blog.csdn.net/
     */
    import axios from 'axios'
    
    // 请求地址前缀
    let baseURL = ''
    if( process.env.NODE_ENV === 'production' ) {
        // 生产环境
        baseURL = ''
    } else {
        // 开发环境
        baseURL = 'http://本地测试域名/'
    }
    
    // 请求拦截器
    // 更多参考 https://www.jb51.net/article/273205.htm
    axios.interceptors.request.use((config) => {
        // 可选 - 登录token - https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage
        if (localStorage.getItem('token')) {
            config.headers['token'] = localStorage.getItem('token')
        }
        // 请求超时时间 - 毫秒
        config.timeout = 10000
        config.baseURL = baseURL
        // 自定义Content-type
        // config.headers['Content-type'] = 'application/json'
        return config;
    }, (error) => {
        return Promise.reject(error)
    })
    
    // 响应拦截器
    // 更多参考 https://www.jb51.net/article/273205.htm
    axios.interceptors.response.use((response) => {
        /**
         * 可添加请求响应的处理逻辑, 例如接口自定义的response.data.code不是200代表失败。
         * 错误的话 return Promise.reject(response)
         * 正确的话 return response
         */
        return response
    }, (error) => {
        // 可添加请求失败后的处理逻辑
        return Promise.reject(error)
    })
    
    
    
    // axios的get请求
    export function getAxios({url, params}) {
        return new Promise((resolve, reject) => {
            axios.get(url, {
                params
            }).then(res => {
                resolve(res.data)
            }).catch(err => {
                console.log(err)
                reject(err)
            })
        })
    }
    
    // axios的post请求
    export function postAxios({url, data}) {
        return new Promise((resolve, reject) => {
            axios.post(
                url, 
                data, 
                {
                    headers: {
                        'Content-Type': 'application/x-www-form-urlencoded'
                    }
                }
            ).then(res => {
                resolve(res.data)
            }).catch(err => {
                reject(err)
            })
        })
    }
    
    export default axios
    
  4. 接口管理
    创建/src/api/xxx.js
    import { getAxios, postAxios } from '@/utils/axios.js'
    
    export function apiGetListXX (data) {
        return postAxios({ url: '/cgi-bin/draft/batchget', data })
    }
    export function apiAddXX (data) {
        return postAxios({ url: '/cgi-bin/draft/add', data })
    }
    export function apiGetCart () {
        return getAxios({ url: '/cgi-bin/cart/latest' })
    }
  5. 使用接口
    修改/src/views/xx.vue
    <script setup>
      import { ref, reactive, onMounted } from 'vue'
      import { apiGetListXX, apiAddXX } from '@/api/xxx.js'
    
      onMounted(()=>{
        
        apiGetListXX()
        .then(res => {
          console.log('请求成功')
          console.log(res)
        })
        .catch(e => {
          console.log('请求失败')
          console.log(e)
        })
        .finally(()=>{
          console.log('请求结束')
        })
        
      })
    
    </script>

参考

Vue.js axios响应拦截如何获取返回状态码_vue.js_脚本之家这篇文章主要介绍了Vue.js axios响应拦截如何获取返回状态码问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教https://www.jb51.net/article/273205.htmhttps://segmentfault.com/a/1190000022195227https://segmentfault.com/a/1190000022195227


http://www.kler.cn/a/556617.html

相关文章:

  • 51单片机入门_10_数码管动态显示(数字的使用;简单动态显示;指定值的数码管动态显示)
  • 低代码技术在医院的应用与思考
  • 计算机专业知识【深入理解子网中的特殊地址:为何 192.168.0.1 和 192.168.0.255 不能随意分配】
  • AI汽车新风向:「死磕」AI底盘,引爆线控底盘新增长拐点
  • RTSP场景下RTP协议详解及音视频打包全流程
  • 如何在 ubuntu 上使用 Clash 与 docker 开启代理拉起
  • python制图之小提琴图
  • webpack和grunt以及gulp有什么不同?
  • Github 2025-02-20 Go开源项目日报 Top10
  • linux 安装启动zookeeper全过程及遇到的坑
  • Qt/C++面试【速通笔记一】
  • 蓝桥杯备赛-基础训练(一)数组 day13
  • [文末数据集]ML.NET库学习010:URL是否具有恶意性分类
  • 如何利用AI制作PPT,轻松实现高效演示
  • 计算机毕业设计Python+DeepSeek-R1高考推荐系统 高考分数线预测 大数据毕设(源码+LW文档+PPT+讲解)
  • 23种设计模式 - 状态模式
  • 高级运维:1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。2. 基于 openEuler 构建 LVS-DR 群集。
  • 【Python爬虫(27)】探索数据可视化的魔法世界
  • tp6上传文件大小超过了最大值+验证文件上传大小和格式函数
  • 【Flink实战】Flink网络内存和托管内存