2020-10-23

axios封装token 拦截等等

import axios from 'axios';
import $store from '../store/index.js';

let baseUrl = '';
let options = {
	lock: true,
	text: 'Loading',
	spinner: 'el-icon-loading',
	background: 'rgba(0,0,0,0.7)'
}
import {
	Loading,
	Message
} from 'element-ui';
let loading = null;

if (process.env.NODE_ENV == 'development') {
	baseUrl = '/api'
}
if (process.env.NODE_ENV == 'production') {
	baseUrl = '.......'
}

const instance = axios.create({
	baseURL: baseUrl,
	timeout: 5000,
	responseType: 'json',
	withCredentials: false,
	headers: {
		'content-Type': 'application/json'
	}
})

instance.interceptors.request.use(
	(config) => {
		loading = Loading.service(options);
		if (config.data.checkToken) {
			if ($store.state.login.loginState) {
				config.headers.token = $store.state.login.token;
				return config
			} else {
				Message({
					showClose: true,
					message: '您还没有登录',
					type: 'error',
					duration: 1000,
					onClose: () => {
						router.replace({
							name: 'login'
						});
					}
				})
			}
		} else {
			return config
		}
	},
	(error) => {
		return Promise.reject(error)
	}
)

instance.interceptors.response.use(
	(response) => {
		let res = response.data;
		if (res.errorCode = 20000) {
			loading.close();
			Message({
				showClose: true,
				message: '登录超时',
				type: 'error',
				duration: 1000,
				onClose: () => {
					router.replace({
						name: 'login'
					});
				}
			})
		}
		if (res.token != null || res.token != undefined) {
			config.headers.token = res.token;
			let userInfo = window.localStorage.getItem('userInfo');
			userInfo = JSON.parse(userInfo);
			userInfo.token = res.token;
			$store.commit('login', userInfo)
		}
		loading.close();
		return response;
	},
	(error) => {
		return Promise.reject(error)
	}
)
export default instance

二次封装

import request from './about.js'

const common = {
	method: 'get',
	data: {}
}

export default {
	http: function(options = {}) {
		options.url = options.url;
		options.method = options.method || common.method;
		options.data = options.data || common.data;
		return request({
			...options
		}).then(res => res.data)
	},
	get: function(url, data = {}, options = {}) {
		options.url = url;
		options.data = data;
		options.method = 'get';
		return this.http(options)
	},
	post: function(url, data = {}, options = {}) {
		options.url = url;
		options.data = data;
		options.method = 'post';
		return this.http(options)
	},
	put: function(url, data = {}, options = {}) {
		options.url = url;
		options.data = data;
		options.method = 'put';
		return this.http(options)
	},
	patch: function(url, data = {}, options = {}) {
		options.url = url;
		options.data = data;
		options.method = 'patch';
		return this.http(options)
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值