vue2中使用axios,以及axios拦截器的配置

2023-10-30

目录

一、vue2项目中如何实现异步请求

1、axios:是一个基于Promise的网络请求库。既可以在node.js(服务器端)使用,也可以在浏览器端使用

2、vue中的使用方法

​ (2)引用方法:

​ A、原生的方式(不推荐使用)

​ B、在项目的main.js文件中导入axios,将其写入Vue的原型中(推荐使用)

缺点:只能在vue2中使用,vue3中不能用

C、将axios单独封装到某个配置文件中(在配置文件中单独封装axios实例)—— (推荐使用)

优点:既可以在Vue2中使用,也可以在Vue3中使用

3、axios中不同请求方式向服务器提交数据的格式:

二、axios拦截器的配置

2、拦截器:

​ (1)请求拦截器:对客户端发起的请求进行统一的前期处理

                                (token、时间戳、cookie等)

​ (2)响应拦截器:对服务器端响应给客户端的数据统一进行处理之后再发给客户端



一、vue2项目中如何实现异步请求

1、axios:是一个基于Promise的网络请求库。既可以在node.js(服务器端)使用,也可以在浏览器端使用

(1)在node.js中使用的原生的http模块

(2)在浏览器中使用的XMLHttpRequest

2、vue中的使用方法

(1)安装:npm install axios

​ (2)引用方法:

​ A、原生的方式(不推荐使用)

  axios({
      url: 'http://localhost:8089/students/test',  //远程服务器的url
      method: 'get' //请求方式
    }).then(res=>{
      this.students = res.data
    }).catch(e=>{
      console.log(e)
    })
//缺点:每个使用axios的组件都需要导入

强调:axios对服务器端数据的封装

​ res.config:响应信息的配置情况

​ res.data:响应的数据

​ res.headers:响应头信息(信息的大小、信息的类型)

​ res.request:异步的请求对象(XMLHttpRequest)

​ res.status:请求-响应的状态码(200)

​ res.statusText:请求-响应状态码对应的文本信息

​ B、在项目的main.js文件中导入axios,将其写入Vue的原型中(推荐使用)

//该文件是脚手架项目中的main.js

import axios from "axios";
Vue.prototype.$http = axios //在Vue的原型上添加一个$http属性,该属性保存了axios
axios.defaults.baseURL = 'http://localhost:8089'

 在组件中通过this.$http的方式来使用

this.$http.get('http://localhost:8089/students/test').then(res=>{
          this.students = res.data
}).catch(e=>{
          console.log(e)
})

缺点:只能在vue2中使用,vue3中不能用

C、将axios单独封装到某个配置文件中(在配置文件中单独封装axios实例)—— (推荐使用)

在\src\assets静态资源文件夹下创建axios配置文件

//配置文件:axiosapi.js
import axios from "axios";
const axiosapi = axios.create({
    baseURL: 'http://localhost:3000', //基础的服务器地址
    timeout: 5000  //连接超时的时间(单位是毫秒)
})
export default  axiosapi  //axiosapi是axios的实例

在组件中使用如下:

import $http  from '../config/axiosapi'  //$http是在导入时自定义的命名可变的
$http.get('/students/test').then(res=>{
          this.students = res.data
}).catch(e=>{
          console.log(e)
})

优点:既可以在Vue2中使用,也可以在Vue3中使用

3、axios中不同请求方式向服务器提交数据的格式:

(1)get方式请求:服务器端通过 req.query.参数名 来接收

​ 第一种:直接将请求参数绑在url地址上。

 第二种:通过params方式进行提交

(2)post方式请求:服务器端通过 req.body.参数名 来接收 

(3)put方式请求:和post方式一样    // 传参的方式

​ (4)delete方式请求:和get方式一样   // 传参的方式

二、axios拦截器的配置

1、axios模块的作用:是对基于http请求的封装。在浏览器对异步请求对象XMLHttpRequest进行封装

2、拦截器:

​ (1)请求拦截器:对客户端发起的请求进行统一的前期处理

                                (token、时间戳、cookie等)

​ (2)响应拦截器:对服务器端响应给客户端的数据统一进行处理之后再发给客户端

axios配置文件如下:

import axios from "axios";

//1. 创建axios实例,配置基础路径
const axiosapi = axios.create({
    baseURL:'http://localhost:3000',
    timeout:5000,//连接超时
});

//2. 定义请求拦截器:给所有请求都带上token
axiosapi.interceptors.request.use((req)=>{
    let token = sessionStorage.getItem('Auth');//获取页面存储的token
    if (token) {
        req.headers['Auth'] = token;//将token添加至请求头对象的Auth属性中
    }
    return req;
},(error)=>{//返回错误的信息
    return Promise.reject(error);
});

//3. 定义响应拦截器: 对服务器响应客户端的数据进行统一处理
axiosapi.interceptors.response.use(res=>{
    //3.1 对响应数据进行处理
    let data = res.data;
    let code = data.code;
    if(code === 200){
        //请求成功时,将res.data对象返回给响应对象
        return data;
    } else {
        return Promise.reject(data);
    }
},(error)=>{
    return Promise.reject(error);
})

//4. 导出axios实例,供组件异步请求使用
export default axiosapi;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue2中使用axios,以及axios拦截器的配置 的相关文章

  • 如何使用 HTML 5 实现类似 gmail 的文件上传/附件

    我记得一些支持 Ajax 之类的选项 无回发世界 文件上传 隐藏的 iframe 使用 flash 对象 尽管我仍然好奇为什么使用 SWF 以及它提供什么优势 然而 通过查看博客 HTML 5 似乎很有前途 我尝试了一些小示例 它确实有效
  • Angular 4 过滤器搜索自定义管道

    所以我试图构建一个自定义管道来在 ngFor 循环中执行多个值的搜索过滤器 我花了几个小时寻找一个好的工作示例 其中大多数都是基于以前的版本 并且似乎不起作用 所以我正在构建管道并使用控制台为我提供值 但是 我似乎无法显示输入文本 以下是我
  • 如何判断一个网页是否支持jquery?

    确定网页是否启用 jquery 的最佳方法是什么 如果这是确定它的最佳方法 则使用 jquery 本身 if jQuery jquery object exists jQuery 并不神奇 它本质上只是一个大对象 您可以像检查任何其他对象一
  • 如何使 d3 饼图响应式?

    我有一个 PIE 图表 它工作正常 但我无法使其具有响应能力和可调整大小 我需要它与移动浏览器和 iPad 等兼容 div div
  • 此页面上的脚本导致 ie 运行缓慢

    问题就在标题中 IE 行为异常 并说有一个脚本运行缓慢 FF 和 Chrome 没有这个问题 我怎样才能找到问题所在 那个页面有很多JS 手动检查不是一个好主意 EDIT 这是我正在处理的一个项目的页面 但我需要一个工具来查找问题 End
  • 检测 Google 验证码的挑战窗口何时关闭

    我正在使用谷歌隐形验证码 有没有办法检测挑战窗口何时关闭 我所说的挑战窗口是指您必须选择一些图像进行验证的窗口 目前 我在按钮上放置了一个旋转器 一旦单击按钮 就会呈现验证码挑战 无法向用户提示另一个质询窗口 我以编程方式调用渲染函数 gr
  • 为什么这行带有“await”的代码会触发微任务队列处理?

    以下引用是我理解微任务队列处理的主要参考 当 JS 堆栈清空时 就会处理微任务 承诺使用 杰克 阿奇博尔德 https twitter com jaffathecake status 954653170986311680 这对我来说没有意义
  • JavaScript 将键添加到数组中的每个值

    我下面有这个数组 它由一个简单的数组组成 我想要完成的是放一把钥匙id在每个数组值前面以实现类似的效果 id a id b id c id d 有没有一种简单的方法可以做到这一点 任何帮助将不胜感激 谢谢 var test a b c d
  • 检索 css3 缩放元素的宽度/高度

    我正在与 offsetWidth 属性的奇怪之处 我认为 作斗争 这是场景 比方说 我有一个span标签 在我的js中 在某个时刻我执行css3转换 对于这个元素 例如 el set styles transform scale scale
  • 当我多次调用 requestAnimationFrame 时会发生什么

    我的意思是一次调用多个具有相同功能的 requestAnimationFrame function Draw DoSomething function AFunc prepare something requestAnimationFram
  • 为什么我收到“在嵌套函数中通过 this 对类字段进行潜在无效的引用访问”错误

    在普通 JS 中 我的代码可以正常工作 对于这种情况 我想组件化我的Wall类应该在浏览器中显示用户上传的图像 同样 这在 vanilla JS 中正常工作 但在 JSX 中不起作用 我得到了一个potentially invalid re
  • 如何使用 window.onerror 捕获所有 javascript 错误? (包括道场)

    这个问题是后续问题javascript 如何在弹出警报中显示脚本错误 https stackoverflow com questions 2604976 javascript how to display script errors in
  • webpack中动态加载外部模块失败

    我正在尝试建立以下架构 一个核心 React 应用程序 它具有一些基本功能 并且能够在运行时加载其他 React 组件 这些额外的 React 组件可以按需加载 并且它们在构建核心应用程序时不可用 因此它们不能包含在核心应用程序的捆绑包中
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • 如何在 webpack 中渲染嵌套的 SASS?

    采取以下CSS MyComponent color blue Button color red 以及以下 React 组件 import React from react import classes from MyComponent sc
  • 如何重复 ajax 请求,直到满足 RxJS Observable 的条件?

    我正在尝试重复请求 直到响应包含使用 RxJS 的数据 此时我想调用成功 或失败 处理程序 但我在使用 RxJS 时遇到了麻烦 这是我目前的方法 redux observable action observable mergeMap gt
  • 使用 ref 触发反应 dropzone 不起作用

    我正在实现这个库 https github com felixrieseberg React Dropzone Component https github com felixrieseberg React Dropzone Compone
  • PDF 在 Safari 中隐藏 Jquery Modal

    这是与我有关的事情this https stackoverflow com questions 24052681 pdf hide jquery modal in ie问题 在 IE 中 我在对话框中使用 iframe 解决了问题 所以它工
  • d3.event.translate 在触摸设备的缩放上包含 NaN

    我使用 d3 为我的 svg 编写了一个自定义缩放函数 如下所示 Zoom behavior function myzoom xpos d3 event translate 0 ypos d3 event translate 1 vis a
  • 如何映射轮播的子项数组?

    我正在尝试将 Carousel 组件包装在映射对象数组周围作为组件的子级 目前我只能让映射创建映射对象的 1 个子对象 轮播需要像这样

随机推荐

  • blender_(uv应用)................http://digitalman.blog.163.com/blog/static/23874605620174172058299/...

    轻松学习Blender基础入门之九 UV 1 2017 06 21 14 24 49 分类 Blender 举报 字号 订阅 下载LOFTER 我的照片书 前言
  • LittleFs文件系统

    小型文件系统 littlefs 简介 LittleFs设计之初的重点特性是 1 低资源消耗 2 掉电保护 3 擦写均衡 本章节重点讨论第 2 和 3 这两个特性 第 1 个特性则贯穿在整个设计过程中 后文把LittleFs简称为lfs 1
  • FaceForensics++数据集下载,FaceForensics++: Learning to Detect Manipulated Facial Images

    FaceForensics 数据集下载 FaceForensics Learning to Detect Manipulated Facial Images 0 前言 如何运行 主要是前三个超参数 不同压缩率所需的空间需求 code 0 前
  • 数据集批量打标——shell脚本批量生成文件并重命名

    shell脚本批量生成文件并重命名 最近接到一个数据集标注的任务 使用的标注工具是LabelImg 使用前配置了环境Anaconda python 3 7 Linux 并在该环境下配置了pyqt5 数据集里的图片是一段视频逐帧抽图 要求在图
  • CCNA学习笔记九 NAT地址转换及优缺点

    网络地址转换 将很多的私网地址转换成公网IP Telnet 快 可以被拦截 ssh ssl加密 安全 改变IP包头 使目的地址 源地址或两个地址在包头中被不同的地址替换 路由器会保存一个转换表 当数据包回来的时候 还原成正确的私网地址 NA
  • LED数码管数字数据集

    LED数码管数字数据集 结合百度OCR取得很好效果 数据集结合百度的OCR百度的OCR https gitee com paddlepaddle PaddleOCR tree release 2 1 程序对应数据集训练进行目标检测识别 数据
  • 在github上托管属于自己的网页

    文章目录 前言 一 配置github 1 建立新的仓库 repository 二 配置git 1 git与github连接 2 测试git与github的连接 3 通过git上传 删除github仓库中的文件 4 网页显示 5 更换域名 总
  • Anaconda安装、源配置、虚拟环境搭建、及Python常用软件安装详解(详细教程)

    首先先介绍一下各种安装软件的基本介绍和常见命令 基本介绍 Anaconda 是可以便捷获取包且对包能够进行管理 同时对环境可以统一管理的发行版本 Anaconda包含了conda Python在内的超过180个科学包及其依赖项 conda是
  • 山东大学软件学院软件项目管理复习

    考前整理的复习题 有一些考试考到了 分享给下一级吧 1 项目目标的制约因素 项目范围 成本 进度计划 客户满意度 三个约束 范围 成本 时间 项目范围是为使客户满意必须做的工作 成本是完成项目所需要的费用 进度计划安排每项任务的起始时间和所
  • pre标签显示服务器端txt文档,区域设计pre显示标签pre

    区域设计pre显示标签pre 内容精选 换一换 在现场讲解汇报 实时监控等场景下 为了获得更好的演示效果 通常需要将态势感知服务的分析结果展示在大型屏幕上 如果只是单纯将控制台界面放大显示 视觉效果并不是很理想 此时可以利用综合大屏 展示专
  • Java并发修改异常ConcurrentModificationException

    import java util ArrayList import java util Iterator import java util ListIterator public class ConcurrentModificationEx
  • A complete log of this run can be found in:

    npm run dev npm ERR code ENOENT npm ERR syscall open npm ERR path C Users Administrator Desktop 项目名 package json npm ERR
  • 什么是设计模式?程序员如何学好设计模式?

    前几天 我给大家介绍了算法和数据结构的基础知识 后来又有小伙伴私信问我 小灰 你能不能也讲一讲设计模式的相关知识 没问题 对于程序员来说 设计模式也是必须要掌握的一项核心知识 我今天就来给大家重点讲一讲 编程的痛点 那么 到底什么是设计模式
  • 上海市“星光计划”职业院校技能大赛 网络安全竞赛试题任务书

    2023上海市 星光计划 职业院校技能大赛 网络安全竞赛试题任务书 2023上海市 星光计划 职业院校技能大赛 网络安全竞赛试题任务书 A模块基础设施设置 安全加固 200分 A 1 登录安全加固 A 2 Web安全加固 Web A 3 流
  • linux2.4内核模块隐藏,Linux环境下的高级隐藏技术

    摘要 本文深入分析了Linux环境下文件 进程及模块的高级隐藏技术 其中包括 Linux可卸载模块编程技术 修改内存映象直接对系统调用进行修改技术 通过虚拟文件系统proc隐藏特定进程的技术 隐藏技术在计算机系统安全中应用十分广泛 尤其是在
  • 学习笔记 JavaScript ES6 Reflect

    学习内容 将Object属于语言内部的方法放到Reflect上 修改某些Object方法的返回结果 让其变得更合理 让Object操作变成函数行为 Reflect对象的方法与Proxy对象的方法相辅相成 将Object属于语言内部的方法放到
  • Jenkins + 云效 前后端项目自动化部署

    环境安装 创建目录 后续下载的内容 放在里边方便管理 cd mkdir docker cd docker mkdir maven mkdir jenkins mkdir java mkdir registry 宝塔 不在赘述 前往官网有安装
  • 爬取数据是违法的吗_网络爬虫违法吗?

    Web爬取 也称为Web抓取 数据抓取或爬虫 是一种计算机程序技术 用于从网站上抓取大量数据 并将其处理为结构化数据 Web抓取是常用的 基本上 网页抓取是互联网的功能 例如 SEO需要创建站点地图并授予其权限 让Google对其网站进行抓
  • R learning 十八讲 0018-R语言绘图基础

    0018 R语言绘图基础 2020 07 29更新 使用代码块 看起来更方便 更改了第6节 这次不介绍如ggplot2等绘图包 只记录一些R基础就能实现的东西 跟着我爪子敲一遍 相信你会有收获 有用的话请点赞收藏 O 嗷 能点个大大的关注就
  • vue2中使用axios,以及axios拦截器的配置

    目录 一 vue2项目中如何实现异步请求 1 axios 是一个基于Promise的网络请求库 既可以在node js 服务器端 使用 也可以在浏览器端使用 2 vue中的使用方法 2 引用方法 A 原生的方式 不推荐使用 B 在项目的ma