Vue3中使用axios
Promise介绍

同步代码与异步代码
安装并引入axios
npm install axios
此时package.json里面就多了axios依赖

引入axios
获取数据
Axios GET参数构成:axios.get(url,{config{},…{}…})
-
url:
- 字符串:目标服务器的地址,如
https://api.example.com/resource。
- 字符串:目标服务器的地址,如
-
config (可选):
-
配置对象,用于设置请求的具体行为。常用的配置项包括:
-
params: URL 查询参数,将其序列化为查询字符串并附加到请求 URL。例如:
params: { userId: 1, sort: 'asc' } -
headers: 自定义请求头,例如 Authorization 头:
headers: { 'Authorization': 'Bearer YOUR_TOKEN' } -
timeout: 请求超时的时间,单位为毫秒。
timeout: 5000 // 5秒超时 -
responseType: 指定响应类型(如 'json', 'text', 'blob', 'arraybuffer', 'document')。
-
withCredentials: 指定是否跨域请求时是否需要使用凭证(如 Cookies)。
-
validateStatus: 自定义请求状态码的成功范围。默认情况下,2xx 状态码会被视为成功。
-
// 以下是个获取url里数据的函数
const getStudent = async () => { // await用在函数里面要在函数前面加async// 也可以用结构来承接axios返回数据const x = await axios.get('http://geek.itheima.net/v1_0/channels')// axios要配合await使用console.log(x);count.value = x.data.data.arrays // 把axios获取的数据赋值给前面的变量}
调用该函数后就得到了url里面的数据
在 Vue 3 中,使用 Axios 进行数据请求通常是放在 onMounted 生命周期钩子中。这个钩子会在组件实例被挂载后立即调用,非常适合进行初始数据获取。如果是点按钮来获取并渲染,就不用放在OnMounted函数里
onMounted(() => {
// 在组件挂载后执行的代码
});
<script setup>
import { useStudentStore } from '@/store';
import { onMounted } from 'vue';
const StudentStore = useStudentStore()
// 在组件挂载完成后调用getStudent(),就是要放在onMounted(() => {<fun>})里
onMounted(() => {StudentStore.getStudent()
})
</script><template><h1>这是son2</h1><ul><li v-for="(item, index) in StudentStore.prince" :key="index">{{ index + 1 }} {{ item }}</li></ul></template>
发送数据
Axios POST 请求参数结构:axios.post(url, data,{config{},…{}…})
-
url:
- 字符串:目标服务器的地址,如
https://api.example.com/resource。
- 字符串:目标服务器的地址,如
-
data(传得较多):
- 对象:将被作为请求体发送到服务器的数据。内容可以是任意数据类型(对象、数组、基本数据类型等),通常是 JSON 格式的对象。
示例:
{ name: 'Alice', age: 30 } -
config (可选):
- 配置对象,用于设置请求的具体行为。常用的配置项包括:
- headers: 自定义请求头。
headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer TOKEN' } - timeout: 请求超时的时间,单位是毫秒。
timeout: 1000 // 一秒超时 - params: URL 查询参数,会自动拼接到 URL 中。
params: { userId: 1 } - responseType: 指定响应类型。
responseType: 'json' // 默认是 json - validateStatus: 自定义请求状态码的成功范围。默认情况下,2xx 状态码会被视为成功。
validateStatus: function (status) { return status >= 200 && status < 500; // 只接收 2xx 和 4xx 状态码 }
const postfeedback = async() => {console.log(advice.value); // advice对象变量在函数外定义好,并用v-model与输入框绑定// 发送post请求并获得响应const resp = await axios.post('https://hmajax.itheima.net/api/feedback', advice.value)alert(resp.data.message); // 后端发送的响应数据}
axios拦截器
token介绍:

在Vue 3中,使用axios拦截器可以帮助我们在请求发送之前或响应到达之后执行一些操作。这些操作可以包括设置请求头、处理错误、统一管理跳转等。
如何使用axios拦截器:
1. 请求拦截器:在请求发送之前执行,可以用来修改请求配置或添加额外的逻辑,例如添加token验证信息。
import axios from 'axios';axios.interceptors.request.use(config => {// 在这里添加token或其他配置const token = localStorage.getItem('token');if (token) {config.headers['Authorization'] = `Bearer ${token}`;}return config;},error => {return Promise.reject(error); //会捕获错误并返回一个拒绝的 Promise});
2. 响应拦截器:在响应到达之后执行,可以用来处理响应数据或进行错误处理。
axios.interceptors.response.use(response => {// 对响应数据进行处理return response.data;},error => {// 对响应错误进行处理if (error.response && error.response.status === 401) {// 处理401错误,例如跳转到登录页面}return Promise.reject(error);});
3. 移除拦截器:如果需要移除拦截器,可以使用`eject`方法。
const myInterceptor = axios.interceptors.request.use(...);axios.interceptors.request.eject(myInterceptor);
4. 在Vue 3项目中设置axios实例:通常我们会创建一个axios实例,并在项目中全局使用。
// src/axios/index.jsimport axios from 'axios';const instance = axios.create({baseURL: 'http://your-api-url',timeout: 1000,});// 添加拦截器instance.interceptors.request.use(...);instance.interceptors.response.use(...);export default instance;
5. 在main.js中引入axios实例:
import { createApp } from 'vue';import App from './App.vue';import axios from './axios'; // 引入封装的axios实例const app = createApp(App);app.config.globalProperties.$axios = axios; // 将axios挂载到全局app.mount('#app');
6. 在组件中使用:
import { ref } from 'vue';export default {setup() {const data = ref(null);const error = ref(null);const fetchData = async () => {try {data.value = await this.$axios.get('/data');} catch (err) {error.value = err;}};fetchData();return { data, error };}}
通过上述步骤,你可以在Vue 3项目中灵活地使用axios拦截器来处理HTTP请求和响应。这样不仅可以简化代码,还可以提高项目的可维护性。
相关文章:
Vue3中使用axios
Promise介绍 同步代码与异步代码 安装并引入axios npm install axios 此时package.json里面就多了axios依赖 引入axios 获取数据 Axios GET参数构成:axios.get(url,{config{},…{}…}) url: 字符串:目标服务器的地址,如 https://api.examp…...
国创——VR虚拟陪伴
VR虚拟陪伴 1.技术基础:利用VR技术创建虚拟人物,实现与用户的互动。 2.功能实现:在用户等待就诊或无聊时,可以启动VR虚拟陪伴功能,与虚拟人物进行聊天、唱歌等互动,缓解用户的紧张情绪。 3.创新点&#…...
【Android 源码分析】Activity生命周期之onPause
忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。 – 服装…...
IAR全面支持国科环宇AS32X系列RISC-V车规MCU
全球领先的嵌入式系统开发软件解决方案供应商IAR与北京国科环宇科技股份有限公司(以下简称”国科环宇”)联合宣布,最新版本IAR Embedded Workbench for RISC-V将全面支持国科环宇AS32X系列RISC-V MCU,双方将共同助力中国汽车行业开…...
Java题集(从入门到精通)04
此系列文章收录大量Java经典代码题(也可以算是leetcode刷题指南),希望可以与大家一起努力学好Java。3、2、1,请看! 目录 一、北京地铁计价程序 二、人名币兑换 三、各位数字之和 一、北京地铁计价程序 【问题描述…...
《西北师范大学学报 (自然科学版)》
《西北师范大学学报》(自然科学版) (CN 62-1087/N, ISSN 1001-988X)是甘肃省教育厅主管、西北师范大学主办的综合性自然科学学术期刊,1942年3月创刊,双月刊,逢单月15日出版。主要刊登全国高校和科研院所在数学、计算机与信息科学、物理学、化…...
Oracle SQL语句没有过滤条件,究竟是否会走索引??
答案是:可能走索引也可能不走索引,具体要看列的值可不可为null,Oracle不会为所有列的nullable属性都为Y的sql语句走索引。 例子: create table t as select * from dba_objects; CREATE INDEX ix_t_name ON t(object_id, objec…...
Java中参数传递:按值还是按引用?
目录 1. 按值传递 vs 按引用传递 1.1 基本数据类型:按值传递 1.2 对象引用:按引用传递 2. 拓展知识:理解 Java 的内存模型 2.1 栈内存的作用 2.2 堆内存的作用 2.3 参数传递的底层机制 3. 总结 在软件开发的世界里,Java 是…...
Linux忘记root用户密码怎么重设密码
直接说步骤: 1.重启客户机 2.在选择内核页面快速按e键,进入编辑模式 进入后应该是这个样子 在这里只能按上下键切换行 找到Linux16这里 3.按右方向键切换到行尾,也就是UTF-8处,在后面添加一个空格,然后加上这段话 …...
【Web】复现n00bzCTF2024 web题解(全)
目录 File Sharing Portal 方法一: 方法二: Focus-on-yourSELF Passwordless File Sharing Portal 附件的Dockerfile给了这么一段 # Add the cron job to the crontab RUN mkdir /etc/cron.custom RUN echo "*/5 * * * * root rm -rf /app…...
仿RabbitMQ实现消息队列客户端
文章目录 客⼾端模块实现订阅者模块信道管理模块异步⼯作线程实现连接管理模块生产者客户端消费者客户端 客⼾端模块实现 在RabbitMQ中,提供服务的是信道,因此在客⼾端的实现中,弱化了Client客⼾端的概念,也就是说在RabbitMQ中并…...
CSS | 面试题:你知道几种移动端适配方案?
目录 一、自适应和响应式 二、为什么要做移动端适配? 三、当前流行的几种适配方案 (1) 方案一:百分比设置(不推荐) (2) 方案二:rem 动态设置 font-size px 与 rem 的单位换算 手动换算 less/scss函数 webpac…...
【web安全】——XSS漏洞
1.XSS漏洞基础 1.1.漏洞成因 XSS(Cross-site scripting)被称为跨站脚本攻击,由于与层叠样式表的缩写一样,因此被缩写为XSS.XSS漏洞形成的原因是网站/程序对前端用户的输入过滤不严格,导致攻击者可以将恶意的is/html代码注入到网页中&#x…...
JAVA基础语法 Day11
一、Set集合 Set特点:无序(添加数据的顺序和获取出的数据顺序不一致),不重复,无索引 public class demo1 {public static void main(String[] args) {//1.创建一个集合//HashSet特点:无序,不重…...
知识图谱入门——7:阶段案例:使用 Protégé、Jupyter Notebook 中的 spaCy 和 Neo4j Desktop 搭建知识图谱
在 Windows 环境中结合使用 Protg、Jupyter Notebook 中的 spaCy 和 Neo4j Desktop,可以高效地实现从自然语言处理(NLP)到知识图谱构建的全过程。本案例将详细论述环境配置、步骤实现以及一些扩展和不足之处。 文章目录 1. 环境准备1.1 Neo4j…...
【AIGC】VoiceControl for ChatGPT指南:轻松开启ChatGPT语音对话模式
博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯安装VoiceControl for ChatGPT插件💯如何使用VoiceControl for ChatGPT进行语音输入VoiceControl for ChatGPT快捷键注意点 💯VoiceControl for C…...
基于SpringCloud的微服务架构下安全开发运维准则
为什么要进行安全设计 微服务架构进行安全设计的原因主要包括以下几点: 提高数据保护:微服务架构中,服务间通信频繁,涉及到大量敏感数据的交换。安全设计可以确保数据在传输和存储过程中的安全性,防止数据泄露和篡改。…...
vue的图片显示
通过参数 调用方法 进行显示图片 方法一: 方法二:...
深度学习06:线性回归模型
线性回归:从理论到实现 1. 什么是线性回归? 线性回归是一种用于预测因变量(目标值)和自变量(特征值)之间关系的基本模型。它假设目标值(y)是特征值(x)的线性…...
Angular ng-state script 元素的生成机制介绍
ng-state 的生成过程是在 Angular SSR 中非常关键的部分。为了让客户端能够接管服务器渲染的页面状态,Angular 在服务器端需要将应用的当前状态保存下来,并将其嵌入到返回的 HTML 中。这样,客户端在接管时就可以直接使用这些状态,…...
告别‘塑料感’渲染:IBGS如何用‘颜色残差’让3D高斯重建的物体更真实?
告别‘塑料感’渲染:IBGS如何用‘颜色残差’让3D高斯重建的物体更真实? 当你在虚拟场景中看到一个金属茶壶时,是否总觉得它像玩具一样缺乏真实感?这就是当前3D高斯溅射(3DGS)技术面临的"塑料感"困…...
webMAN-MOD终极指南:如何在PS3上安装这款强大的全能插件
webMAN-MOD终极指南:如何在PS3上安装这款强大的全能插件 【免费下载链接】webMAN-MOD Extended services for PS3 console (web server, ftp server, netiso, ntfs, ps3mapi, etc.) 项目地址: https://gitcode.com/gh_mirrors/we/webMAN-MOD 你是否还在为PS3…...
如何自学使用关键字排名软件_关键字排名软件与SEO有什么关系
如何自学使用关键字排名软件_关键字排名软件与SEO有什么关系 在当今数字化时代,SEO(搜索引擎优化)已成为每一个网站运营者必不可少的技能。其中,关键字排名软件扮演了极其重要的角色。如何自学使用关键字排名软件呢?关…...
isaac lab5.0与ROS2通信
问题:isaac lab 5.0是基于python3.11 ros2是基于python3.10,因此不能在isaac sim的代码中直接写ros2的代码 在isaac sim中加import socketdef send_to_ros2(v, w):try:sock socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.connect((127.0.0.1…...
Go Interface 与类型断言的实践
Go语言中的Interface与类型断言是提升代码灵活性的重要工具。Interface定义了方法集合,允许不同类型实现相同行为,而类型断言则能在运行时检查接口值的具体类型。本文将深入探讨其核心实践技巧,帮助开发者编写更优雅的Go代码。接口定义与实现…...
GCN在推荐系统中的应用:如何用图神经网络提升电商个性化推荐效果
GCN在电商推荐系统中的实战指南:从二部图构建到A/B测试全流程 当你在电商平台浏览商品时,那些"猜你喜欢"的推荐背后,可能正运行着一套基于图神经网络(GCN)的复杂算法系统。与传统的协同过滤不同,GCN能够捕捉用户-商品交…...
STM32开发方式对比与HAL库实战指南
1. STM32开发方式概述作为一名嵌入式开发者,我亲历了STM32开发方式的变迁。从早期的寄存器操作到标准库,再到如今主流的HAL库,每种方式都有其独特的优势和适用场景。对于刚接触STM32的新手来说,选择合适的开发方式往往是个令人困惑…...
我不是在用 AI 助手,我在把自己的能力沉淀成组织资产
先唠两句:参数就像餐厅点单 把API想象成一家餐厅的“后厨系统”。 ? 路径参数/dishes/{dish_id} -> 好比你要点“宫保鸡丁”这道具体的菜,它是菜单(资源路径)的一部分。查询参数/dishes?spicytrue&typeSichuan -> 好比…...
桌面图标杂乱如何高效管理?NoFences开源工具让文件归类效率提升60%
桌面图标杂乱如何高效管理?NoFences开源工具让文件归类效率提升60% 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 每天面对布满数十个图标的电脑桌面,…...
从VGG到ResNet:我是如何用PyTorch复现经典,并理解‘残差’如何拯救了深度学习的
从VGG到ResNet:用PyTorch复现经典,理解残差如何重塑深度学习 2014年ImageNet竞赛冠军VGG网络将深度卷积神经网络推向了19层的里程碑,但研究者们很快发现:单纯堆叠更多层数反而会导致模型性能下降。这种现象被称作"网络退化&q…...

