当前位置:网站首页>Encapsulation API, request interception, response interception, authentication timeliness
Encapsulation API, request interception, response interception, authentication timeliness
2022-07-19 08:59:00 【~Herding horses~】
encapsulation API
API encapsulation , Create a new one .js file
import axios from 'axios'
// var baseurl = 'http://***.***.**.**:8080'
var baseurl = sessionStorage.getItem('baseurl_4')
// var token = sessionStorage.getItem('token')
// Set alert :post Method
export const PostWarn = function PostWarn(params) {
return new Promise((resolve, reject) => {
axios.post(baseurl+'/user/user_url_api/',params).then(res => {
resolve(res)
}).catch(err => {
console.log(err);
reject(err)
})
})
}
request Intercept ,response Intercept , Timeliness of authentication
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import axios from 'axios'
import vant from 'vant'
import 'vant/lib/index.css';
import {
Dialog, Toast } from "vant";
Vue.config.productionTip = false
Vue.use(vant)
Vue.prototype.$http = axios
sessionStorage.setItem('baseurl_3','http://192.168.**.**:8090') // Sign in
sessionStorage.setItem('baseurl_4','http://192.168.**.**:8080') // register
const base_url = ''
axios.defaults.baseURL = base_url
// axios.defaults.timeout = 1000 * 10
localStorage.setItem('base_url', base_url)
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=utf-8'
// request Interceptor , Used to add token
axios.interceptors.request.use( config => {
let token = sessionStorage.getItem('token');
if(token) {
//request Interception adds token
config.headers.common['Authorization'] = token
}
return config
}),error => {
Promise.reject(error)
}
// Response interceptors
axios.interceptors.response.use(res => {
// There are two kinds of interface response :res.data.code and res.status
const code = res.data.code
const status = res.status;
// Get error messages
const msg = res.data.msg || res.error || res.data.res;
// Get error messages
const rec = res.data.code;
console.log(rec,msg);
if(code == 500 || status == 500) {
console.log(rec,msg);
return Promise.reject(new Error(res))
}else{
return res
}
},error => {
let {
message } = error;
if(message == 'Network Error') {
message = ' Interface connection exception '
console.log(message);
Dialog.alert({
message: ' Interface access exception , Please exit and try again '
}).then( () => {
sessionStorage.removeItem('token')
Toast.loading({
message: ' Jumping ...',
forbidClick: true,
loadingType: 'spinner',
},800);
// setTimeout(() => {
// router.push('/Login');
router.push({
path: '/Login',
query: {
id : '2'}
})
// },1200)
setTimeout(() => {
window.location.reload();
}, 500)
})
}else if(message.includes('Request failed with status code')) {
Dialog.alert({
message: ' Login validation expiration , Please login again '
}).then( () => {
sessionStorage.removeItem('token')
Toast.loading({
message: ' Jumping ...',
forbidClick: true,
loadingType: 'spinner',
},800);
// setTimeout(() => {
// router.push('/Login');
router.push({
path: '/Login',
query: {
id : '2'}
})
// },1200)
setTimeout(() => {
window.location.reload();
}, 500)
})
message = ' system interface ' + message.substr(message.length - 3) + ' abnormal ';
console.log(message);
}
return Promise.reject(error)
})
new Vue({
router,
store,
render: h => h(App)
}).$mount('#app')
边栏推荐
- Convex mirror 3D glass contour scanning
- Programming in the novel [serial 13] the moon bends in the yuan universe
- Unity 使用一张贴图来控制材质主贴图的透明度
- 封装API,request拦截,response拦截,身份验证时效性
- android 数据库左连接查询
- 使用<pre>和JSON.stringify处理网页展示JSON的格式
- 【AXI】解读AXI协议的额外信号(QOS信号,REGION信号,与USER信号)
- Hausdorff loss function for semantic segmentation
- 【CTF】pwn2_ sctf_ two thousand and sixteen
- Zero basic C language
猜你喜欢

Zero basic C language

LeetCode 0116.填充每个节点的下一个右侧节点指针

【手写数字识别】基于Lenet网络实现手写数字识别附matlab代码

分布式事务-可靠消息最终一致性解决方案

LeetCode 0116. Populate the next right node pointer for each node

Event loop, macro task, micro task

项目代码训练教程

LeetCode 剑指 Offer II 041. 滑动窗口的平均值:低空间消耗解决

Jsp+servlet+mysql案例

Leetcode sword finger offer II 041 Average value of sliding window: low space consumption solution
随机推荐
Markdown(5):锚链接
一文,教你实现单点登录
How long does software testing take?
mongodb $符号的神奇用法+mongo数据类型
使用<pre>和JSON.stringify处理网页展示JSON的格式
【LeetCode】通用操作总结
Distributed transaction reliable message final consistency solution
SQL优化
QR分解求矩阵逆--c工程实现
MySQL索引(一)
LabVIEW用了多线程,程序是不是会跑的更快些
Collation of RPA related knowledge points
【AXI】解读AXI协议的额外信号(QOS信号,REGION信号,与USER信号)
MySQL读写分离
MySQL initialization and password modification
【无标题】
Linear regression + basic optimization of deep learning
RPA相关知识点整理
对ogg用户进行加密
认真工作后,发现周围混事的真多