从入门到深入,手把手教你在 Vue 3 中正确使用 Axios,支持全局挂载、局部分离、使用 proxy 连接场景,适合所有前端小白和实战设计。

大家好,我是石小石!一个热爱技术分享的开源社区贡献者,小册《油猴脚本实战指南》作者、CSDN专栏《Vite极速入门通关教程》作者。


一、安装 Axios

npm install axios

二、Vue 3 中将 Axios 全局挂载

Vue 3 不再支持 Vue 2 中的 Vue.prototype 方式,而是通过 app.config.globalProperties 来达到相同效果:

全局挂载

// main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import axios from 'axios'const app = createApp(App)
app.config.globalProperties.$http = axiosapp.use(router).mount("#app")

三、在组件中使用 Axios

使用 getCurrentInstance 获取当前实例 (dev-only)

import { getCurrentInstance, onMounted } from 'vue'export default {setup() {const { ctx } = getCurrentInstance();onMounted(() => {ctx.$http.get('/api/user').then(res => console.log(res));});}
};

使用 proxy 替代 ctx (推荐)

import { getCurrentInstance, onMounted } from 'vue'export default {setup() {const { proxy } = getCurrentInstance();onMounted(() => {proxy.$http.get('/api/user').then(res => console.log(res));});}
};

应对环境错误:ctx 在打包后无法访问 globalProperties,需要使用 proxy 替代。


四、局部引入 + 分类使用

创建 /proxy/index.js

// proxy/index.js
import axios from 'axios';const getList = (url) => axios.get(url);export default {getList
};

在组件中使用

import axiosProxy from '../proxy';axiosProxy.getList('/api/todoList/list').then(res => {console.log(res.data);
});

五、Axios 基础用法

GET 请求

axios.get('/user?id=12345').then(res => console.log(res)).catch(err => console.error(err));

POST 请求

axios.post('/user', {firstName: 'Fred',lastName: 'Flintstone'
}).then(res => console.log(res));

六、通用 config 配置

axios({method: 'post',url: '/user',data: {firstName: 'Fred'},timeout: 1000,headers: {'X-Requested-With': 'XMLHttpRequest'}
});

常用 config 项目概览

项目说明
url请求地址
method方法 (get/post)
baseURL基础路径
headers请求头
paramsurl 取值参数
data请求体数据 (post 用)
timeout超时时间

七、定义全局默认配置

axios.defaults.baseURL = 'https://api.example.com';
axios.defaults.headers.common['Authorization'] = 'Bearer token';
axios.defaults.timeout = 5000;

八、自定义实例 + 拦截器

定义一个独立实例

const instance = axios.create({baseURL: '/api',timeout: 10000,
});

拦截器

instance.interceptors.request.use(config => {// 添加公共 tokenconfig.headers.Authorization = 'Bearer your_token';return config;
}, error => Promise.reject(error));instance.interceptors.response.use(response => {return response.data; // 简化接口结果
}, error => Promise.reject(error));

九、返回结构

Axios 的响应包括如下结构:

{data: {},         // 接口返回数据status: 200,     // HTTP 状态码statusText: 'OK',headers: {},config: {},      // 当前配置request: {}      // XMLHttpRequest 对象
}

实际使用

axios.get('/user/12345').then(res => {console.log(res.data);
});

十、推荐扩展

  • 把 axios 包装成 hooks
  • 封装连接失败提示 / 热更新负载
  • 通过 provide/inject 分类控制 API 请求成本

总结

Vue 3 + Axios 是最常用的前后端通讯配置,重点是「全局 globalProperties 挂载 + proxy 替代 this + 分类 request」,这是一套无需完全依赖 UI 框架的经典组合技术路线,非常适合工程化开发和小组件开发。

关于我

最近在学习油猴脚本开发,写了很多有趣的脚本:

  • 接口拦截工具:修改CSDN博客数据接口返回值

  • Vue路由一键切换:开发效率起飞

  • 任意元素双击实现画中画:摸鱼超级助手

  • 掘金后台自动签到助手

  • 解除文本复制、网页复制、一键下载为MD

  • 主题切换助手

如果你对油猴脚本开发也感兴趣,可以参考我的油猴脚本开发教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/910449.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/910449.shtml
英文地址,请注明出处:http://en.pswp.cn/news/910449.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CppCon 2017 学习:Effective Qt: 2017 Edition

这段内容讲的是 Qt 容器(Qt Containers)和标准库容器(STL Containers)之间的选择和背景: 主要观点: Qt 容器的历史背景 Qt 自身带有一套容器类(如 QList, QVector, QMap 等)&#…

Pandas 核心数据结构详解:Series 和 DataFrame 完全指南

1. 前言:为什么需要 Pandas 数据结构? 在数据处理和分析中,我们需要高效的方式来存储和操作结构化数据。Python 原生的列表(List)和字典(Dict)虽然灵活,但缺乏针对数据分析的优化。…

使用 Solscan API 的开发指南:快速获取 Solana 链上数据

Solana 生态中有多个区块浏览器,其中 Solscan 提供了功能全面的 API,适用于查询地址资产、Solana 生态中有多个区块浏览器,其中 Solscan 提供了功能全面的 API,适用于查询地址资产、交易详情、合约交互等多种开发场景。相比直接使…

高效工具-libretv

什么是libretv? LibreTV 是一个轻量级、免费的在线视频搜索与观看平台,提供来自多个视频源的内容搜索与播放服务。无需注册,即开即用,支持多种设备访问。项目结合了前端技术和后端代理功能,可部署在支持服务端功能的各类网站托管…

回溯----5.括号生成

题目链接 /** 合法括号生成规则: 第一个括号必须是左括号(第一个为右必定无法闭合) 选择过程中左括号数量必须小于n才可选择左括号(大于n则一定有括号无法闭合) 左括号数量必须大于右括号数量才可选择右括号(相等代表所有前驱括号都已闭合) 所需参数: left 记录已选择左括号数…

【weaviate】分布式数据写入之LSM树深度解析:读写放大的权衡

文章目录 一、LSM树的设计哲学:写优化的根本动机1、 传统B树存储的性能瓶颈2、 LSM树的根本性创新 二、写入路径的深度技术分析1、 WAL机制的精密设计2、 MemTable的数据结构3、 刷盘(Flush)过程的技术细节 三、Compaction策略:LS…

Pygame 大鱼吃小鱼

【Pygame 大鱼吃小鱼】是一款基于Python编程语言和Pygame库开发的趣味游戏。Pygame是Python中一个广泛用于开发2D游戏的开源模块集合,它提供了丰富的功能,如窗口管理器、事件处理、图形绘制等,使得初学者也能快速上手创建游戏。 这段 Python …

【为什么在触发的事件中修改控件属性需要使用`Invoke`】

在C#中,特别是在使用Windows Forms或WPF等GUI框架时,控件的属性和状态通常只能在创建它们的线程(即UI线程,即主线程或用户界面线程)中直接修改。这是由于这些框架的设计基于单线程模型,其中所有与用户界面&…

Android 当apk是系统应用时,无法使用webView的解决方案

最近在做项目时,遇到了一个无法使用webView的问题,apk是系统应用,点击加载webView时应用就是崩溃,原因是系统应用时,Android会觉得webView不安全,不避让加载。 解决的思路就是使用映射,把原生的…

ArcGIS Pro无插件加载(无偏移)天地图!一次添加长久使用

以前我们介绍过:ArcGIS无插件加载(无偏移)天地图。这次我们来介绍ArcGIS Pro中如何添加天地图。 我们将通过从天地图官网自己添加服务链接并添加至收藏的方式以及应急的方法来做本次的介绍。天地图的数据主要包括影像、电子地图、地形图等。我…

Go堆内存管理

# Go堆内存管理 1. Go内存模型层级结构 Golang内存管理模型与TCMalloc的设计极其相似。基本轮廓和概念也几乎相同,只是一些规则和流程存在差异。 2. Go内存管理的基本概念 Go内存管理的许多概念在TCMalloc中已经有了,含义是相同的,只是名字…

零售 EDI:Chewy EDI 项目注意事项

在此前的文章《供应商对接Chewy的EDI需求》中,介绍了Chewy的EDI需求,本文主要为大家分享Chewy对于各个业务单据的细节性需求,了解这些细节性注意事项将帮助企业快速基于知行软件提供的EDI服务与Chewy建立EDI对接。 基于知行之桥EDI系统能够通…

Android录制视频自带铺满多行水印

文章目录 引言环境要求代码实现总结 引言 之前做过几种水印需求,这篇文章是关于使用Android原生库开发录制视频自带满帧文字水印。 环境要求 Android 7.0以上Android Studio ,官方开发者官网视频录制功能参考开源库PictureSelector的camerax库 //用到的…

观远ChatBI:加速零售消费企业数据驱动的敏捷决策

近年来,随着国产大模型(如DeepSeek)的快速发展,企业对智能化数据分析工具的需求日益增长。观远数据推出的ChatBI,基于大语言模型(LLM)打造,旨在通过自然语言交互降低数据分析门槛&am…

鸿蒙NEXT-鸿蒙三层架构搭建,嵌入HMRouter,实现便捷跳转,新手攻略。(1/3)

接下来,我将手把手带领大家去完善,搭建一个鸿蒙的三层架构,另实现HMRouter的嵌入。完成后,大家可任意跳转页面,在三层架构中,书写属于自己的篇章。 第0步,项目与AGC华为控制台关联起来 首先AG…

鸿蒙ArkTs仿网易云音乐项目:架构剖析与功能展示

鸿蒙ArkTs仿网易云音乐项目:架构剖析与功能展示 一、引言 在移动应用开发的浪潮中,音乐类应用始终占据着重要的一席之地。网易云音乐凭借其丰富的音乐资源、个性化的推荐算法和独特的社交互动功能,深受广大用户的喜爱。本文将详细介绍一个基…

【web 安全】从 HTTP 无状态到现代身份验证机制

文章目录 Web 安全与系统设计Web存在的问题:Web 是无状态的解决方案一、早期解决方案:Session Cookie 的诞生二、第二阶段:Token 的出现(前后端分离 移动端的解决方案)三、分析总结:1.早期版本&#xff1…

FlutterUnit TolyUI | 布局游乐场

FlutterUnit 基于 TolyUI 大大简化了界面构建的代码复杂程度,因此之前想要实现的一些小功能,就可以轻松支持。布局游乐场是通过交互的方式来 直观体验 组件的布局特性,从而更易学和掌握。目前 FlutterUnit 已在 知识集录模块新增了 布局宝库&…

【数据分析一:Data Collection】信息检索

本节内容含有各典型数据集的推荐,以及其网址,大家根据需要自取 一、检索 最简单、最灵活的数据获取方式就是依靠检索: Google:更适合搜索英文信息 Google Dataset Search(Google 数据集搜索) 网址&…

23.ssr和csr的对比?如何依赖node.js实现

1.为什么说ssr 的node中间层请求速度快。相当于内网? 那vue.js加载怎么没有ssr和csr的说法啊 第一问:为什么说 SSR 的 Node 中间层请求速度快?是不是相当于内网? ✅ 是的,本质上就是「内网请求」,所以更快…