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,这 ...
随机推荐
- Windows下安装mysql的操作步骤
免安装版的Mysql MySQL关是一种关系数据库管理系统,所使用的 SQL 语言是用于访问数据库的最常用的 标准化语言,其特点为体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,在 Web 应 ...
- 脏牛-Linux内核提权
漏洞范围 下载地址:https://github.com/FireFart/dirtycow 有一点可以在意,dirty.c内置在了kali中,使用命令searchsploit dirty可以搜索 也 ...
- [ARC152D] Halftree题解
很好的一道题,即使是我这种菜鸡也感到心潮澎湃. 直觉有余,证明不足.思路有余,推导不足. 无论是什么比赛,对拍都是最有效的查错方式. 本篇题解里的所有图片采用 graph_editor 制作. 题意简 ...
- 为什么HashMap查找比List快很多?
做两数之和这道题目时,引发了一个思考: 为什么两者运行时间相差如此之大???好残忍,我List比你HashMap到底差在哪**** 于是我一顿查资料.... 战犯哈希算法登场 哈希算法会根据你要存入的 ...
- python实现往飞书群发图片及消息
飞书提供了丰富的api来实现消息的通知,包括文本消息.图片消息.富文本消息,本次介绍使用飞书api发送富文本消息,以下是实现思路飞书API地址:https://open.feishu.cn/docum ...
- Message源码分析
Message 在Android中主要是在 消息循环机制 中使用,即配合 Handler,Looper和MessageQueue来进行线程切换,线程间传递数据.Message存储了我们所有需要的东西. ...
- php7的一些新特性
php7的一些特性 打破一切 PHP7要打破一切. PHP开发人员应该接受打破版本之间向下兼容的定律.只要不允许大量的向后兼容,PHP7将是一个高度尊重的语言. 1.创建一个具体的核心语言 删除所有库 ...
- abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)
Abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- Docker入门实践笔记-Dockerfile
镜像是一个打包文件,其中包含了应用程序及其运行所依赖的环境,例如文件系统.环境变量.配置参数等等 联合文件系统 容器镜像内部并不是一个平坦的结构,而是由许多的镜像层组成,每层都是只读不可修改修改的一组 ...
- 当 Amazon Lambda 遇上 Apache APISIX 可以擦出什么火花?
本文首先介绍了什么是 Serverless,以及为什么需要 Serverless:其次,讲述了一个好的网关在 Serverless 架构下的重要性,而 APISIX 就是这样的一个网关:最后,本文重点 ...