vue axiosパッケージリクエストブロック
requestフォルダを作成(srcと同級)requestフォルダの下-httpを作成します.js
ログイン時にバックグラウンドから戻るtokenをセッションストアに存在させる
ログイン時にバックグラウンドから戻るtokenをセッションストアに存在させる
import axios from 'axios';
import store from "../store"
import router from "../router"
// axios.defaults.timeout = 5000;//
axios.defaults.baseURL ='';
//---------------------------------------------------------------------------------------------------
//http request
axios.interceptors.request.use(
config => {
config.headers = {
'content-type':'application/x-www-form-urlencoded'//form data
};
if(sessionStorage.getItem('token')){ // session
config.headers = {
'content-type':'application/json', // json
'token':sessionStorage.getItem('token') // token
}
}
return config;
},
error => {
return Promise.reject(err);
}
);
//http response
axios.interceptors.response.use(
response => {
if(response.data.code=="SenseTime0001"){ //
sessionStorage.removeItem('token'); // token
router.push({ //
path:"/login",
querry:{redirect:router.currentRoute.fullPath}//
})
}
return response;
},
error => {
if(error.response){
switch (error.response.status){
case 401:
store.commit('del_token');
router.push({
path:"/login",
querry:{redirect:router.currentRoute.fullPath}//
})
}
}
return Promise.reject(error.response)
}
)
/**
* post
* @param url String
* @param data Object
* @returns {Promise}
*/
export function post(url,data={}){
return new Promise((resolve,reject) => {
axios.post(url,data)
.then(response => {
resolve(response);
},err => {
reject(err)
})
})
}
/**
* get
* @param url String
* @param data Object
* @returns {Promise}
*/
export function fetch(url,params={}){
return new Promise((resolve,reject) => {
axios.get(url,{
params:params
})
.then(response => {
resolve(response.data);
})
.catch(err => {
reject(err)
})
})
}