首页 > 其他分享 >封装axios请求相关配置和拦截器

封装axios请求相关配置和拦截器

时间:2024-12-06 12:11:51浏览次数:5  
标签:axios 封装 请求 res 拦截器 defaults error config

学习axios的一些记录。。。

安装与引入

安装

npm install axios

引入

import axios from "axios";

1. axios.defaults 默认配置

全局设置默认值:

axios.defaults.timeout = 60 * 1000;

自定义实例默认值:

const service = axios.create({
  baseUrl: "/api",
});
service.defaults.timeout = 60 * 1000;
  • timeout 设置请求超时等待时间
  • baseURL 设置请求路径
  • headers.common['Authorization'] 设置所有请求授权头
  • headers.post['Content-Type'] 设置 POST 请求数据格式
  • headers.get['Content-Type'] 设置 GET 请求数据格式
  • validateStatus 设置请求成功的状态码
  • withCredentials 设置跨域请求是否允许携带 cookie 信息
axios.defaults.baseURL = "/api";
axios.defaults.headers.common["Authorization"] = auth_token;
axios.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
axios.defaults.headers.get["Content-Type"] = "application/x-www-form-urlencoded";
axios.defaults.validateStatus = function (status) {
  return status >= 200 && status <= 500;
};
axios.defaults.withCredentials = true;

2.axios.interceptors 拦截器

axios.interceptors.request.use(
  (config) => {
    // 开始进度条
    Nprogress.start();
    // 请求头判断
    config.headers["my-config"] = cilentId;
    // 判断是否需要携带token
    config.headers[tokenHeader] = getToken();
    // 传递数据加密
    if (config.params) config.params = encrypt(JSON.stringfy(config.params));
    if (config.data) config.data = encrypt(JSON.stringfy(config.data));
    return config;
  },
  (error) => {
    return Pormise.reject(error);
  }
);

axios.interceptors.request.use 请求拦截器,可以在请求拦截器进行 开始进度条、添加 cookie、请求头验证、传递数据加密等操作

axios.interceptors.response.use(
	res => {
		// 结束进度条
		NProgress.done();
		// 判断是否重新登录 status==401
		if(res.data.code==401||res.status==401){
			removeToken();
			Logout();
			router.push({path:'login'})
			return Promise.reject(new Error(message))
		}
		// 不同状态码处理
		if(res.data.code!==200||res.status!==200){
			// ......
			return Promise.reject(new Error(message))
		}
		// 解密数据
		res.data = JSON.parse(decrypt(res.data));
		return res;
	},
	error => {
		// 公共错误处理、根据响应码具体处理
		if(error && error.reponse){
			switch (error.response.status){
				case 400:
					error.message='请求错误';
					break;
				case 401:
					error.message='未授权,请重新登录';
					break;
				// ......
			}
		}
		return Promise.reject(error)
	}
)

axios.interceptors.response.use 响应拦截器,可以进行 结束进度条、不同状态码处理、登录重定向、根据状态码反馈错误、解密数据等操作

标签:axios,封装,请求,res,拦截器,defaults,error,config
From: https://www.cnblogs.com/notetomore/p/18590471

相关文章

  • SpringMVC拦截器
    在前面使用纯注解快速搭建springMVC的基础上配置拦截器,纯注解快速搭建springMVC请查看SpringMVC纯注解快速开发-CSDN博客接下来快速配置一个拦截器,在controller包下新建interceptor包,然后在interceptor包下新建类Handler.java,该类去实现HandlerInterceptor接口,实现其中的三个......
  • axios为什么可以使用对象和函数两种方式调用?是如何实现的?
    Axios可以使用对象和函数两种方式调用,是因为它的核心API设计利用了函数重载和JavaScript的灵活性。本质上,Axios暴露的顶层axios对象既是一个函数,又是一个拥有属性的对象。以下是它的实现方式:Axios对象是一个函数:当你像这样调用axios(config)时,你实际上是在直......
  • axios拦截器原理是什么?
    Axios拦截器的工作原理基于链式调用和Promise。它允许你在请求发送前和响应返回后对请求和响应进行拦截和处理。可以理解为一个“中间件”机制。具体来说,Axios拦截器分为两种:请求拦截器(RequestInterceptors):在请求发送之前执行。可以用于修改请求配置(例如添加head......
  • fetch和axios请求的原理都是基于XMLHttpRerequst吗?
    不完全是。虽然XMLHttpRequest是Ajax的基础,也是早期库(例如jQuery的$.ajax)的核心,但FetchAPI和Axios的工作原理略有不同:XMLHttpRequest:这是一个老牌的浏览器API,用于在浏览器和服务器之间进行HTTP通信。它提供了一种通过JavaScript发送HTTP请求和接收响应......
  • C++中的封装性
    定义:封装性:1.将属性(成员变量)和行为(成员函数)作为一个整体,表现在生活中的事物2.将属性和行为加以权限控制(将事物的属性(成员变量)和行为(成员函数)封装在一起形成一个类,并且设置相应的访问权限)C++中如何实现封装:将数据成员设为私有或保护类型,再提供公有成员函数访问和修改数据,......
  • 一文教你用vite创建vue3项目初始化并添加router、axios、Pinia保姆级教程
    文章目录一、什么是vite二、什么是vue3三、什么是router四、什么是axios五、什么是pinia六、详细教程1.查看nodejs版本2.使用vite最新版3.配置@指代src目录(可选)4.安装router5.引入axios6.引入pinia一、什么是viteVite是新一代的前端构建工具,在尤雨溪开发Vue3.0的......
  • 超小封装数显驱动/最大支持7×4按键VK1Q60 QFN16L,适用于24小时长期联系工作的应用场
    产品品牌:永嘉微电/VINKA产品型号:VK1Q60封装形式:QFN16L概述VK1Q60是一种带键盘扫描电路接口的LED驱动控制专用芯片,内部集成有数据锁存器、LED驱动、键盘扫描等电路。SEG脚接LED阳极,GRID脚接LED阴极,可支持8SEGx4GRID的点阵LED显示。最大支持7x4按键。本芯片性能稳定质量......
  • h5 sqlite 操作封装
    参考文档错误码//数据库名称constnamesjk="sl"//存储路径constpath=`_doc/${name}.db`/**基本操作*查询数据库连接状态isOpenDatabase * 无参数* 返回truefalse***关闭数据库 closeDatabase* 无参数* Promise......
  • Springboot封装通用AI模块实现平台智能化(封装和使用AI详细教程)
    目录国内支持SDK调用的优秀开源AI平台导入依赖获取APIkey(注意保密)测试Demo封装通用AI模块application.yml配置APIkey定义AI配置类封装通用的AI请求模块使用AI赋能项目设计Prompt的常用技巧技巧一 定义SystemPrompt技巧二 让AI 进行角色扮演技巧三 提......
  • Sigrity Power DC Single-BoardPackage IR Drop Analysis模式进行封装基板压降仿真分
    SigrityPowerDCSingle-BoardPackageIRDropAnalysis模式进行封装基板压降仿真分析操作指导SigrityPowerDCSingle-BoardPackageIRDropAnalysis模式不仅可以用于PCB压降仿真分析,同样也可以用于封装基板的压降仿真分析,以下图为例进行说明具体操作如下双击打开Powe......