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

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
        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({
                url,
                method: 'post',
                data
            }).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

相关文章:

  • 深入解析 MySQL 数据删除操作:DELETE、TRUNCATE 与 DROP 的原理与选择
  • MySQL 之存储引擎(MySQL Storage Engine)
  • 软件内有离线模型,效果也很实用......
  • DeepSeek AI 视频创作完整指南:从注册到制作
  • 第一章——1.2 Java“白皮书”的关键术语
  • 3月营销日历:开启春日盛宴,绽放生活魅力
  • 前x-ai首席科学家karpathy的从零构建ChatGPT视频学习笔记--8000字长图文笔记预警(手打纯干货,通俗易懂)
  • iOS App的启动与优化
  • Telnet IBM AIX服务器相关监控指标的阐述
  • 【Python】模块
  • Spring Boot项目的基本设计步骤和相关要点介绍
  • 【Grasshopper】【Python】点集排序:带索引的Z字形排序算法
  • MySQL配置文件读取顺序
  • 【故障处理】- 11g数据泵到19c导致的job不自动执行
  • Golang学习笔记_34——组合模式
  • 什么是语料清洗、预训练、指令微调、强化学习、内容安全; 什么是megatron,deepspeed,vllm推理加速框架
  • 【Scrapy】Scrapy教程6——提取数据
  • 30 款 Windows 和 Mac 下的复制粘贴软件对比
  • MySQL数据库基础
  • 分享8款AI生成PPT的工具!含测评
  • 价格周报|供需回归僵局,本周生猪均价与上周基本持平
  • 体坛联播|郑钦文收获红土赛季首胜,国际乒联公布财报
  • 工程院院士葛世荣获聘任为江西理工大学校长
  • 中方就乌克兰危机提出新倡议?外交部:中方立场没有变化
  • 国家发改委:美芯片药品等领域关税影响全球科技发展,损害人类共同利益
  • 海南省三亚市委原常委、秘书长黄兴武被“双开”