「从零开始的 Vue 3 系列」:第八章——深入解析 Axios 与拦截器的使用与封装

前言

本系列将从零开始,系统性地介绍 Vue 3 的常用 API,逐步深入每个核心概念与功能模块。通过详尽的讲解与实战演示,帮助大家掌握 Vue 3 的基础与进阶知识,最终具备独立搭建完整 Vue 3 项目的能力。

Axios

Axios 是一个基于 Promise 的 HTTP 客户端,适用于浏览器和 Node.js。它提供了一系列功能,使得在 JavaScript 应用中发起 HTTP 请求变得简单和高效。

项目中搭建

使用 npm 或 yarn 安装 Axios:

cpp 复制代码
npm install axios
# 或者
yarn add axios

发送get\post请求

cpp 复制代码
import axios from 'axios';

axios.get('https://api.example.com/data')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

axios.post('https://api.example.com/data', {
  key1: 'value1',
  key2: 'value2'
})
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

拦截器

在 Vue 3 中,拦截器主要应用于 HTTP 请求和响应的处理,通常与 axios 结合使用。拦截器的作用是对请求和响应在发送或接收前进行预处理,常见的功能包括:添加全局的请求头、处理请求错误、统一处理响应数据和错误等。通过拦截器,我们可以在不修改业务代码的情况下,轻松实现这些功能。

Vue 3 中的常见拦截器功能包括:
  • 请求拦截器:在请求发送前,可以对请求配置进行修改,如添加 token,或进行参数的统一处理。
  • 响应拦截器:在收到响应后,可以对响应数据进行处理,或统一处理错误,提升代码的复用性。

拦截器常用于以下场景:

  1. 身份验证:自动为每个请求添加身份验证 token。
  2. 全局错误处理:捕获所有请求错误并集中处理。
  3. 据预处理:对响应数据进行格式化,简化业务逻辑。

实现封装优化:

新建文件utils,目录下新建request.js文件

cpp 复制代码
import axios from 'axios';

// 创建axios实例
const service = axios.create({
//设置请求路径
//这里设置后端服务的端口号
baseURL:"http://localhost:8080"
//接口响应时间
timeout:1000
})


//请求拦截器
service .interceptors.request.use(config => {
  // 在请求发送之前做些什么
  //config.headers是请求头,可以在这里携带token等等数据
  config.headers.Authorization = 'Bearer YOUR_TOKEN';
  return config;
}, error => {
  // 处理请求错误
  return Promise.reject(error);
});

//响应拦截器
service .interceptors.response.use(response => {
  // 对响应数据做点什么
  return response;
}, error => {
  // 处理响应错误
  return Promise.reject(error);
});

//将axios暴露出去
export default service

新建api.js文件,用于封装接口

cpp 复制代码
//引入封装的axios
impor service  from "../request"

//新建接口
const getList =()=>service.get("这里是你的接口请求",{params}//这里是携带的参数)
//将接口暴露出去,正常调用就行
  export default{
    getList
  }

Axios总结

  • Axios 基于 Promise 设计,支持异步请求处理,非常适合现代 JavaScript 应用。
  • 请求和响应拦截器:可以在请求或响应被 then 或 catch 处理前进行拦截和修改。
  • 自动转换 JSON 数据:自动将请求和响应的数据格式转换为 JSON。
  • 取消请求:支持请求取消功能。
  • 客户端支持防御 XSRF:提供 XSRF 防护功能。
ps:以上内容仅为本人对 vue3的个人理解,如有不足之处,欢迎大家指正与交流,共同进步。
相关推荐
珑墨19 分钟前
【Turbo】使用介绍
前端
军军君011 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three
xiaoqi9222 小时前
React Native鸿蒙跨平台如何实现分类页面组件通过searchQuery状态变量管理搜索输入,实现了分类的实时过滤功能
javascript·react native·react.js·ecmascript·harmonyos
打小就很皮...2 小时前
Tesseract.js OCR 中文识别
前端·react.js·ocr
qq_177767372 小时前
React Native鸿蒙跨平台实现应用介绍页,实现了应用信息卡片展示、特色功能网格布局、权限/联系信息陈列、评分展示、模态框详情交互等通用场景
javascript·react native·react.js·ecmascript·交互·harmonyos
2603_949462102 小时前
Flutter for OpenHarmony社团管理App实战:预算管理实现
android·javascript·flutter
wuhen_n2 小时前
JavaScript内存管理与执行上下文
前端·javascript
Hi_kenyon3 小时前
理解vue中的ref
前端·javascript·vue.js
jin1233224 小时前
基于React Native鸿蒙跨平台地址管理是许多电商、外卖、物流等应用的重要功能模块,实现了地址的添加、编辑、删除和设置默认等功能
javascript·react native·react.js·ecmascript·harmonyos
2501_920931704 小时前
React Native鸿蒙跨平台医疗健康类的血压记录,包括收缩压、舒张压、心率、日期、时间、备注和状态
javascript·react native·react.js·ecmascript·harmonyos