vue全家桶进阶之路47:Vue3 Axios拦截器封装成request文件
可以将Axios拦截器封装成一个单独的request文件,以便在整个应用程序中重复使用。
以下是一个示例,展示如何将Axios拦截器封装成一个request文件:
1、创建一个名为request.js的新文件,并导入Axios:
import axios from 'axios';
2、创建一个名为request的函数,并将其导出:
这将创建一个名为request的函数,并将其设置为具有基本URL的新的Axios实例。要在封装的Axios实例中添加超时设置,可以在创建Axios实例时传递timeout选项。
export const request = axios.create({
baseURL: 'https://example.com/api',
timeout: 5000, // 超时设置为5秒
});
3、在request函数中添加拦截器:
request.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
request.interceptors.response.use(function (response) {
// 对响应数据做点什么
return response;
}, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
});
这将添加一个请求拦截器和一个响应拦截器。可以在这些拦截器中执行需要的操作,例如在请求发送之前添加身份验证标头或在响应返回后检查响应数据是否有误。
4、最后,导出request函数:
export default request;
5、现在可以在应用程序中使用request函数来执行网络请求,并且每个请求都将经过预定义的拦截器。例如:
import request from './request';
request.get('/users')
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
这将使用封装的Axios实例发出GET请求,然后使用预定义的拦截器处理响应
完整示例:
要在发送请求之前携带Token和Username,可以使用请求拦截器来为所有请求添加身份验证标头,
请求拦截器检查localStorage中是否存在名为“token”和“username”的值,并将其添加为Authorization和Username标头。根据实际情况调整这些标头的名称和值。
要对响应数据进行操作,使用响应拦截器。在上面的示例中,响应拦截器检查响应数据中的“status”属性是否为“success”。如果不是,则将其视为错误,并将其作为异常抛出。异常包含响应对象,其中包含所有响应信息,例如响应头、状态码和响应体。可以根据实际情况调整这些检查和异常抛出的逻辑。
import axios from 'axios';
export const request = axios.create({
baseURL: 'https://example.com/api',
timeout: 5000, // 超时设置为5秒
});
request.interceptors.request.use(function (config) {
// 在发送请求之前添加身份验证标头
config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;
config.headers.Username = localStorage.getItem('username');
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
request.interceptors.response.use(function (response) {
// 对响应数据做些什么
const responseData = response.data;
if (responseData.status !== 'success') {
const error = new Error(responseData.message || '请求失败');
error.response = response;
throw error;
}
return responseData.data;
}, function (error) {
// 对响应错误做些什么
return Promise.reject(error);
});
vue全家桶进阶之路47:Vue3 Axios拦截器封装成request文件的更多相关文章
- Vue 全家桶 + Electron 开发的一个跨三端的应用
代码地址如下:http://www.demodashi.com/demo/11738.html GitHub Repo:vue-objccn Follow: halfrost · GitHub 利用 ...
- Vue全家桶高仿小米商城
大家好,我是河畔一角,时隔半年再次给大家带来一门重量级的实战课程:<Vue全家桶高仿小米商城>,现在很多公司都在参与到商城的构建体系当中,因此掌握一套商城的标准开发体系非常重要:商城的开始 ...
- vue证明题一,vue全家桶的构成
简单说下vue的构成,当然是简单为主,网上这东西满天飞,简单说几句就ok 1.vue是什么 vue读作view,是一种js框架.只关注于视图层,操作内容包括js,html,css 2.vue全家桶是什 ...
- 用 Vue 全家桶二次开发 V2EX 社区
一.开发背景 为了全面的熟悉Vue+Vue-router+Vuex+axios技术栈,结合V2EX的开放API开发了这个简洁版的V2EX. 在线预览 (为了实现跨域,直接npm run dev部署的, ...
- Vue全家桶
简介 “简单却不失优雅,小巧而不乏大匠”. Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计. 为什么 ...
- 从零开始系列之vue全家桶(3)安装使用vuex
什么是vuex? vuex:Vue提供的状态管理工具,用于同一管理我们项目中各种数据的交互和重用,存储我们需要用到数据对象. 即data中属性同时有一个或几个组件同时使用,就是data中共用的属性. ...
- 使用vue全家桶制作博客网站
前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue.vue-router.vuex.v ...
- 转载: 使用vue全家桶制作博客网站 HTML5 移动网站制作的好教程
使用vue全家桶制作博客网站 前面的话 笔者在做一个完整的博客上线项目,包括前台.后台.后端接口和服务器配置.本文将详细介绍使用vue全家桶制作的博客网站 概述 该项目是基于vue全家桶(vue. ...
- Vue全家桶介绍
一直不清楚全家桶是什么玩意,上网搜了一下,才知道就是平时项目中使用的几个依赖包,下面分享一下 Vue 全家桶介绍 Vue有著名的全家桶系列,包含了vue-router(http://router.vu ...
- 一个简单的假vue全家桶(vue+vue-router+require)
首先说明我觉得这是一个比较好理解的vue全家桶(虽然是假的),模块化也是用require来做的,而且如果后期有必要压缩我也会用gulp来做 1.依赖个个本地模块,require只是用来载入page,这 ...
随机推荐
- Python相关练习说明
Python练习情况说明 1.练习了在文件中进行统计的相关方法,基本操作其实差不多,步骤基本如下: # 1.打开相关文件,然后利用for循环进行按行读取的操作 # 2.读取的过程中,将读取到的数据加以 ...
- ARP协议:网络世界的临门一脚
大家好,我是风筝. 各位同学肯定见过关于网络的面试题,什么TCP协议和UDP的区别啦,IP协议工作在哪层啊等等,这都是网络中定义的各种协议.这些标准化的协议就是网络分层模型标准化的核心部分.要想搞懂网 ...
- Teamcenter_NX集成开发:通过NXOpen查询零组件是否存在
之前用过NXOpen PDM的命名空间下的类,现在记录一下通过PDM命名空间下的类查询Teamcenter零组件的信息,也可以用来判断该零组件是否存在. 1-该工程为DLL工程,直接在NX界面调用,所 ...
- 记录hive一次数据倾斜问题的解决以及思考总结
解决数据倾斜是大数据开发中比较重要的能力,这个现象指的是分布式集群中,由于数据分发的不当,导致某个节点要处理的错误过多,导致整个计算机任务迟迟结束不了,甚至可能节点出现OOM使得任务失败 处理数据倾斜 ...
- Bean的自动装配(Autowired)
Bean的自动装配(Autowired) 自动装配是Spring满足bean依赖的一种方式 Spring会在上下文中自动寻找,并自动给bean装配属性 在Spring中有三种自动装配的方式 在xml中 ...
- java -- Object类和String类
Object类 java.lang.Object类是Java语言中的根类,每个类都使用 Object 作为超类, 所有的类都直接或间接继承自 Object 类.所有对象(包括数组)都实现这个类的方法. ...
- python去掉重复值的方法--四种
my_list = [1,1,1,1,2,3,3,3,4,5,5,56,6,7,77,7,5,5,3]# 集合法:缺点是结果会打乱原始数据的顺序print(set(my_list)) # 列表法:缺点 ...
- C++ 测试框架 GoogleTest 初学者入门篇 丙
theme: channing-cyan *以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/RIztusI3uKRno ...
- PyG 图神经网络依赖环境安装(Anaconda)
1.默认用户在Anaconda的虚拟环境中已安装Pytorch 2.打开anaconda prompt命令窗, activate "你的虚拟环境名称" 3.在激活后的虚拟环境下输入 ...
- 【vue3-element-admin】Husky + Lint-staged + Commitlint + Commitizen + cz-git 配置 Git 提交规范
前言 本文介绍 vue3-element-admin 如何通过 Husky + Lint-staged + Commitlint + Commitizen + cz-git 来配置 Git 提交代码规 ...