axios 二次封装

本文档介绍了如何使用Axios库在JavaScript中设置请求和响应拦截器来处理用户鉴权。在请求拦截器中,当用户请求数据时,检查并添加token到header。响应拦截器则统一处理后端返回的错误状态,如401(未授权)和403(禁止访问),以便进行相应的用户交互和逻辑处理。此外,还展示了如何根据环境切换API基础URL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里只是写了简单得封装,如有需要可自行翻阅文档,根据需要封装你想封装得东西。

请求拦截器 =>

当用户向后台请求数据的时候,后端会传token到前端验证,如果token过期了,客户端可以做出对应的操作,将服务器返回的token存储到本地存储或者vuex中,每一次向服务器请求时携带一个token,如果没有携带即非法访问
引入axios
import axios from 'axios';
import qs from 'qs';// qs为第三方库
axios全局配置项
//需要配置打包
switch(process.env.NODE_ENV){
//可以在根目录的 package.json 配置 NODE_ENV 
case 'production':
axios.defaults.baseURL = "生产环境地址";
break;
case 'test'
axios.defaults.baseURL ="测试环境地址";
default;
axios.defaults.baseURL ="开发环境地址";
}
/*
设置超时时间
设置是否允许跨域携带身份凭证
*/
axios.defaults.timeout = 12000;
axios.defailts.withCredentials = true;

/*
设置请求传输数据的格式
只支持POST请求,根据实际要求决定设置不设置
*/
axios.defailts.headers['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defailts.transformRequest = data => {qs.stringify(data)};


请求拦截器

客户端发送请求 => [请求拦截器] => 服务器

axios.interceptors.request.use(
config => {//请求成功时执行
	//获取本地存储中的token
	let token = localStorage.getItem('token');
	token && (config.headers.Authorization = token);
	return config;
},
error => {//请求失败时执行
	return Primise.reject(error)
}
)


响应拦截器

服务器返回信息 => [响应拦截器统一处理] => 客户端

axios.interceptors.response.use(
response=>{
 	return response.data;
},error => {//拦截失败
return Primise.reject(error);
let {response } = error;
if(response) {
    switch (response.status) {
       case 401://权限问题,提示未登录或无权限等;
       break;
       case 403://服务器拒绝执行 (token过期)
       break;
       case 404://找不到页面
       break;
    }
} else {
    //服务器连结果都没有返回
    if(!window.navigator.onLine) {
        //断网处理:跳转断网页面/提示网络错误等等
        return;
    }
    return Promise.reject(error)
	}
}
)
参考文档:http://axios-js.com/zh-cn/docs/#%E5%93%8D%E5%BA%94%E7%BB%93%E6%9E%84
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值