react use axios拦截器
import axios from 'axios';
improt Promise from 'es6-promise'; Promise.polyfill(); const axiosService = axios.create(); axiosService.defaults.timeout = 5000;
axiosService.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; axiosService.interceptors.request.use(
(config) => {
if (config.data && config.data.$skipAuthHandler) {
config.$skipAuthHandler = true;
delete config.data.$skipAuthHandler;
}
if (config.params && config.params.$skipAuthHandler) {
config.$skipAuthHandler = true;
delete config.params.$skipAuthHandler;
}
config.headers.Authorization = getAuthorization();
return config;
},
(error) => {
return Promise.reject(error)
}
); axiosService.interceptors.response.use(
(response) => {
return response;
},
(error) => {
const err = error.response;
if (err.status === 401 && !! config.data && !config.data.$skipAuthHandler) {
user.clear();
window.location = '/unauthorization';
}
return Promise.reject(error);
}
); export default axiosService;
update:
import axios from 'axios';
import {toastr} from "react-redux-toastr"; //import LoginUser from "service/login-service/LoginUser"; Promise.polyfill(); const axiosService = axios.create();
//const _loginUser = new LoginUser(); axiosService.defaults.timeout = 5000;
axiosService.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; axiosService.interceptors.request.use(
(config) => {
if (config.data && config.data.$skipAuthHandler) {
config.$skipAuthHandler = true;
delete config.data.$skipAuthHandler;
}
if (config.params && config.params.$skipAuthHandler) {
config.$skipAuthHandler = true;
delete config.params.$skipAuthHandler;
}
//config.headers.Authorization = _loginUser.getAuthorization();
return config;
},
(error) => {
return Promise.reject(error)
}
); axiosService.interceptors.response.use(
(response) => {
return response;
},
(error) => {
const err = error.response;
if (err.status === 401 && !! err.config && !err.config.$skipAuthHandler) {
//_loginUser.clear();
window.location = '/unauthorization';
}
toastr.error(err.data.message);
return Promise.reject(error);
}
); export default axiosService;
通用请求服务:
import axiosService from 'axiosService';
improt Promise from 'es6-promise'; Promise.polyfill(); export default class RequestService {
axiosRequest(param) {
return new Promise((resolve, reject) => {
axiosService.request({
url: param.url || '',
method: param.method || 'GET',
responseType: param.responseType || 'json',
data: param.data || null,
params: param.params || '',
}).then(res => {
typeOf resolve === 'function' && resolve(res);
}).catch(error => {
typeOf reject === 'function' && reject(error);
})
})
}
}
react use axios拦截器的更多相关文章
- 12. 前后端联调 + ( proxy代理 ) + ( axios拦截器 ) + ( css Modules模块化方案 ) + ( css-loader ) + ( 非路由组件如何使用history ) + ( bodyParser,cookieParser中间件 ) + ( utility MD5加密库 ) + ( nodemon自动重启node ) + +
(1) proxy 前端的端口在:localhost:3000后端的端口在:localhost:1234所以要在webpack中配置proxy选项 (proxy是代理的意思) 在package.jso ...
- Vue2学习小记-给Vue2路由导航钩子和axios拦截器做个封装
1.写在前面 最近在学习Vue2,遇到有些页面请求数据需要用户登录权限.服务器响应不符预期的问题,但是总不能每个页面都做单独处理吧,于是想到axios提供了拦截器这个好东西,再于是就出现了本文. 2. ...
- vue axios拦截器 + 自编写插件 实现全局 loading 效果;
项目需求:用自定义的 .gif 图标实现全局 loading 效果:为避免在每个页面手动添加,且简单高效的实现,经查阅资料,最终采用了 vue axios拦截器 + 自编写 loading 插件:下面 ...
- axios拦截器搭配token使用
在了解到cookie.session.token的作用后学习token的使用 cookie是随着url将参数发送到后台,安全性最低,并且大小受限,不超过4kb左右,它的数据保存在客户端 session ...
- Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
准备 利用vue-cli脚手架创建项目 进入项目安装vuex.axios(npm install vuex,npm install axios) axios配置 项目中安装axios模块(npm in ...
- axios拦截器的使用方法
很多时候我们需要在发送请求和响应数据的时候做一些页面处理,比如在请求服务器之前先判断以下用户是登录(通过token判断),或者设置请求头header,或者在请求到数据之前页面显示loading等等,还 ...
- vue导航守卫和axios拦截器的区别
在Vue项目中,有两种用户登录状态判断并处理的情况,分别为:导航守卫和axios拦截器. 一.什么是导航守卫? vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航.(在路由跳转时 ...
- Axios拦截器配置
Axios 拦截器的配置如下 分三块:基础配置.请求之前拦截.响应之前拦截 发送所有请求之前和操作服务器响应数据之前对这种情况过滤. http request 请求拦截器 每次发送请求之前判断是否存在 ...
- 交互-通过axios拦截器添加token认证
通过axios拦截器添加token认证 一.通过axios请求拦截器添加token,保证拥有获取数据的权限 通常访问接口需要相关权限,通常是需要携带token如下所示 那如何在请求头中添加token? ...
随机推荐
- 010-shiro与spring web项目整合【四】缓存Ehcache
一.Ehcache shiro每次授权都会通过realm获取权限信息,为了提高访问速度需要添加缓存,第一次从realm中读取权限数据,之后不再读取,这里Shiro和Ehcache整合. 1.添加Ehc ...
- 在Centos上打Preempt-rt实时补丁(续)
经过上一篇,发现2.6.31版本的补丁不能正常运行(还未找到原因),现改用2.6.33版本: kernel:linux-2.6.33.9 patch:patch-2.6.33.9-rt 解压并打好补丁 ...
- oracle 创建视图、修改视图、删除视图、利用视图操作基本表
转:http://blog.sina.com.cn/s/blog_6b58d2fa0100rgvw.html 1.使用create or replace view命令创建视图 语法格式: create ...
- LeetCode:二进制手表【401】
LeetCode:二进制手表[401] 题目描述 二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59). 每个 LED 代表一个 0 或 1,最低位在右 ...
- nodejs入门-静态文件服务器
本文展示是基于node.js的静态文件服务器,代码参考自这里,主要是练习node http.文件模块的使用,另外,对理解http协议也很有帮助除了实现了基本的路由控制,还实现了MIME类型.304缓存 ...
- Java伪代码示例
学习并转载自https://www.cnblogs.com/z245894546/p/7535261.html import.java.大道至简.*; import.java.愚公移山.*; publ ...
- C# Winform 窗体传值 利用委托 子窗体传值给父窗体
常用的Winform窗体传值有两种方式. 1.更改Form.designer.cs文件,将控件的设为Public,供子窗体访问. 在designer.cs文件的最后,找到你的控件声明. private ...
- 微信小程序:其中wxml和wxss的样式说明
微信小程序:其中wxml和wxss的样式说明 一.简介 对于css不熟悉的Android程序员来说,开发微信小程序面临的一个比较困难的问题就是界面的排版了.微信小程序的排版就跟wxml和wxss有关了 ...
- Sybase:游标用法以及嵌套用法
Sybase:游标用法以及嵌套用法 游标示例一: --Sybase游标示例一: create PROCEDURE DBA.p_proc_test() ON EXCEPTION RESUME begin ...
- 20162326 《Java程序设计》第3周学习总结
20162326 <Java程序设计>第3周学习总结 教材学习内容总结 这周我通过课堂学习了VIM的列编辑crtl+v,shift+i shift+a·分别是左侧插入和右侧插入.还学习了使 ...