重生之我在学Vue--第7天 Vue 3 数据请求(Axios)

重生之我在学Vue–第7天 Vue 3 数据请求(Axios)

文章目录

  • 重生之我在学Vue--第7天 Vue 3 数据请求(Axios)
    • 前言
    • 一、Axios 基础:从安装到实战
      • 1.1 安装与全局配置
      • 1.2 四大请求方法实战
        • GET 请求:获取任务列表
        • POST 请求:新增任务
        • PUT & DELETE 请求:更新与删除
    • 二、拦截器:打造智能请求管道
      • 2.1 请求拦截器(统一添加 Token)
      • 2.2 响应拦截器(统一错误处理)
    • 三、Axios + Pinia 黄金组合
      • 3.1 在 Store 中封装 API 调用
      • 3.2 组件中优雅调用
    • 四、实战任务:集成 RESTful API
      • 4.1 接口模拟(使用 Mock.js)
      • 4.2 完整 CRUD 实现流程图
    • 总结与思考

前言

数据交互是前后端分离开发的核心环节,Axios 作为 Vue 生态中最流行的 HTTP 客户端,能帮助我们高效管理异步请求。今天的重点是在 Vue 3 中集成 Axios,并结合 Pinia 状态管理实现数据流的闭环。

Vue3 官方中文文档传送点: 简介 | Vue.js

Vue3 的中文官方文档学习笔记很全还有练习场,推荐去官网学习

Vue前端成仙之路:Vue 前端成仙之路_野生的程序媛的博客-CSDN博客

GO后端成神之路:Go 后端成神之路_野生的程序媛的博客-CSDN博客


一、Axios 基础:从安装到实战

1.1 安装与全局配置

npm install axios

src/utils 目录下创建 request.js,配置全局实例:

import axios from 'axios'// 创建 Axios 实例
const service = axios.create({baseURL: 'https://your-api-domain.com', // 接口基础路径timeout: 10000, // 超时时间headers: { 'Content-Type': 'application/json' } // 公共请求头
})export default service

1.2 四大请求方法实战

GET 请求:获取任务列表
// 在组件中调用
import service from '@/utils/request'const fetchTasks = async () => {try {const response = await service.get('/tasks')console.log(response.data)} catch (error) {console.error('请求失败:', error)}
}
POST 请求:新增任务
const addTask = async (taskData) => {await service.post('/tasks', taskData)
}
PUT & DELETE 请求:更新与删除
// 更新任务
const updateTask = async (id, newData) => {await service.put(`/tasks/${id}`, newData)
}// 删除任务
const deleteTask = async (id) => {await service.delete(`/tasks/${id}`)
}

二、拦截器:打造智能请求管道

2.1 请求拦截器(统一添加 Token)

service.interceptors.request.use(config => {const token = localStorage.getItem('token')if (token) {config.headers.Authorization = `Bearer ${token}`}return config},error => Promise.reject(error)
)

2.2 响应拦截器(统一错误处理)

service.interceptors.response.use(response => {// 处理标准响应结构if (response.data.code === 200) {return response.data} else {return Promise.reject(response.data.message)}},error => {// 处理 HTTP 状态码异常if (error.response.status === 401) {router.push('/login')}return Promise.reject(error)}
)

三、Axios + Pinia 黄金组合

3.1 在 Store 中封装 API 调用

// stores/task.js
import { defineStore } from 'pinia'
import service from '@/utils/request'export const useTaskStore = defineStore('task', {actions: {async fetchTasks() {try {const res = await service.get('/tasks')this.tasks = res.data} catch (error) {console.error('加载任务失败:', error)}},async addTask(task) {await service.post('/tasks', task)this.fetchTasks() // 自动刷新列表}}
})

3.2 组件中优雅调用

<script setup>
import { useTaskStore } from '@/stores/task'const taskStore = useTaskStore()// 初始化加载数据
onMounted(() => {taskStore.fetchTasks()
})// 提交新任务
const handleSubmit = async () => {await taskStore.addTask(newTask.value)
}
</script>

四、实战任务:集成 RESTful API

4.1 接口模拟(使用 Mock.js)

// mock/task.js
import Mock from 'mockjs'Mock.mock('/tasks', 'get', {'code': 200,'data|5-10': [{'id|+1': 1,'title': '@ctitle','completed': '@boolean'}]
})

4.2 完整 CRUD 实现流程图

组件触发Action
Pinia调用Axios
请求成功?
更新Store状态
全局错误处理
视图自动更新

总结与思考

  1. 分层架构思维:将请求逻辑封装在 Store 层,保持组件专注 UI 交互
  2. 错误处理标准化:通过拦截器实现统一的异常处理流程
  3. 性能优化方向
    • 添加请求取消功能(避免重复请求)
    • 实现接口级缓存(减少重复请求)

明日预告:Day8 将引入 Element Plus,为我们的任务管理系统打造专业级 UI 界面!

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

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

相关文章

C++蓝桥杯皮亚诺曲线距离求解

C蓝桥杯皮亚诺曲线距离求解 一、题目概述二、解题分析2.1解题思路2.2k值范围限制 三、实现代码四、代码测试4.1蓝桥杯测试平台4.2直接传入原始输入的k值4.3限制k值大小4.4pow函数求整数高次幂存在误差4.5满分代码 附录error: ‘long long int y1’ redeclared as different kin…

uni-app+vue3学习随笔

目录相关 static文件 编译器会把static目录中的内容整体复制到最终编译包内&#xff0c; 非 static 目录下的文件&#xff08;vue组件、js、css 等&#xff09;只有被引用时&#xff0c;才会被打包编译。 css、less/scss 等资源不要放在 static 目录下&#xff0c;建议这些…

为什么大模型网站使用 SSE 而不是 WebSocket?

在大模型网站&#xff08;如 ChatGPT、Claude、Gemini 等&#xff09;中&#xff0c;前端通常使用 EventSource&#xff08;Server-Sent Events, SSE&#xff09; 来与后端对接&#xff0c;而不是 WebSocket。这是因为 SSE 更适合类似流式文本生成的场景。下面我们详细对比 SSE…

【2025】基于python+django的考研自习室预约系统(源码、万字文档、图文修改、调试答疑)

考研自习室预约系统通过 Python Django 技术栈的深度整合&#xff0c;为考研学生和自习室管理者打造了一个高效、便捷、智能的自习室预约管理平台。系统不仅满足了学生便捷预约自习室的需求&#xff0c;提升了备考效率&#xff0c;还帮助管理者实现了自习室资源的科学管理和优…

Flutter中stream学习

Flutter中stream学习 概述Stream的基础概念stream的常用方法Stream.fromFuture(Future<T> future)Stream.fromFutures(Iterable<Future<T>> futures)Stream.fromIterable(Iterable<T> elements)Stream.periodic(Duration period, [T computation(int c…

计算机网络:计算机网络的组成和功能

计算机网络的组成&#xff1a; 计算机网络的工作方式&#xff1a; 计算机网络的逻辑功能; 总结&#xff1a; 计算机网络的功能&#xff1a; 1.数据通信 2.资源共享 3.分布式处理:计算机网络的分布式处理是指将计算任务分散到网络中的多个节点&#xff08;计算机或设备&…

【redis】五种数据类型和编码方式

文章目录 五种数据类型编码方式stringhashlistsetzset查询内部编码 五种数据类型 字符串&#xff1a;Java 中的 String哈希&#xff1a;Java 中的 HashMap列表&#xff1a;Java 中的 List集合&#xff1a;Java 中的 Set有序集合&#xff1a;除了存 member 之外&#xff0c;还有…

AI与现有运维管理软件之间的相互影响和协同发展

AI与现有运维软件之间的相互影响和协同发展。我们可以从几个角度来探讨&#xff1a; 1. AI与运维软件的共生关系 已有运维软件作为大模型的一部分&#xff1a;运维软件&#xff08;如监控易&#xff09;在长期运行中积累了大量的数据和经验&#xff0c;这些数据和经验可以被用来…

深度评测DeepSeek、ChatGPT O1和谷歌Gemini AI应用开发场景 - DeepSeek性能完胜!

下面我会展示我为期一周的实验结果&#xff0c;创作不宜&#xff0c;希望大家关注我&#xff0c;以后多多互3&#xff01;前一阵我在互联网上看到很多关于DeepSeek R1的讨论&#xff0c;这个开源模型据说可以媲美&#xff0c;甚至优于像OpenAI o1这样的付费模型。 由于我在日常…

使用DeepSeek+蓝耘快速设计网页简易版《我的世界》小游戏

前言&#xff1a;如今&#xff0c;借助先进的人工智能模型与便捷的云平台&#xff0c;即便是新手开发者&#xff0c;也能开启创意游戏的设计之旅。DeepSeek 作为前沿的人工智能模型&#xff0c;具备强大的功能与潜力&#xff0c;而蓝耘智算云平台则为其提供了稳定高效的运行环境…

Hcaptcha验证码自动识别方案详解

Hcaptcha验证系统简介 这个令人头疼的验证系统长这样: 还有这样: 看着就让人不开心,每次都要玩这种小游戏。 工作原理 1. 环境评估(形式主义阶段) 它会检查这些东西: 浏览器指纹行为数据IP地址网站设置 如果你看起来像个"正常访客",它可能就放你过。但要是发现…

SpringBoot事务管理

Spring事务管理 在日常开发过程中&#xff0c;只要涉及数据操作&#xff0c;都不可避免地会涉及事务管理相关内容&#xff0c;而Spring提供了强大的事务管理机制&#xff0c;能够帮助开发者更轻松地处理数据一致性和事务的问题。 一、什么是事务管理 事务&#xff08;Transa…

JU TPS研究笔记

这个模板的Cover Demo和尘白禁区一样&#xff0c;是自由观察和背后锁定视角可切换的TPS。这种模式比单独做自由观察或背后锁定都要复杂。在非瞄准也就是自由观察状态&#xff0c;鼠标控制相机转动&#xff0c;WASD控制人物以相机前方为前方一边移动一边平滑旋转到面对移动方向。…

[NewStarCTF 2023 公开赛道]ez_sql1 【sqlmap使用/大小写绕过】

题目&#xff1a; 发现id处可以sql注入&#xff1a; 虽然输入id1;show databases;#没什么回显&#xff0c;但是知道这里是字符型注入了 这次利用sqlmap注入 --dbs&#xff1a;列出所有数据库名字 python .\sqlmap.py -u http://a40b2f0a-823f-4c99-b43c-08b94ed0abb2.node5.…

DeepSeek-实用集成大礼包

随着DeepSeek的持续火热,在各种平台看到大家基于deepseek+各类应用的案例。这些案例真假难辨,现在DeepSeek已经推出了官方的Awesome DeepSeek Integrations,集成了各类应用,下面是详细的介绍。 DeepSeek Integrations 是 DeepSeek 官方在 GitHub 上精心整理的一个集合了各种…

Ubuntu安装问题汇总

参考文章&#xff1a; 【Ubuntu常用快捷键总结】 【王道Python常用软件安装指引】 1. 无法连接虚拟设备 sat0:0 【问题】&#xff1a;出现下图所示弹框。 【问题解决】&#xff1a; 点击 “否” 。 点击左上角的 “虚拟机” → “设置…” → “CD/DVD (SATA)” &#xff0c;…

深陷帕金森困境,怎样重燃生活信心?

帕金森&#xff0c;这个悄然影响无数中老年人生活的神经系统疾病&#xff0c;正逐渐走进大众视野。患病后&#xff0c;患者常出现静止性震颤&#xff0c;安静时手部、下肢不自主抖动&#xff0c;如同在默默诉说着身体的异常。肢体变得僵硬&#xff0c;行动迟缓&#xff0c;起步…

空间遥感智能处理技术发展现状与趋势

在数字化时代&#xff0c;空间遥感技术已经成为获取地球表面信息的重要手段。随着卫星遥感技术的快速发展&#xff0c;获取的遥感数据量激增&#xff0c;这对遥感数据的智能处理提出了更高的要求。本文将探讨空间遥感智能处理技术的发展现状与未来趋势。 发展现状 大数据与人工…

svn删除所有隐藏.svn文件,文件夹脱离svn控制

新建一个文件&#xff0c;取名remove-svn-folders.reg&#xff0c;输入如下内容&#xff1a; Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] "Delete SVN Folders" [HKEY_LOCAL_MACHINE\SOFTWARE\Class…

Datawhale coze-ai-assistant 笔记2

目录 快速搭建一个 AI 助手智能体 搭建步骤 步骤1&#xff1a;创建一个智能体 步骤2&#xff1a;编写提示词 步骤3&#xff1a;调试智能体 步骤4&#xff1a;发布智能体 设置智能体模型 选择模型 生成多样性 输入及输出设置 如何使用 步骤1&#xff1a;更换模型 步…