import axios from'axios';import{ MessageBox, Message }from'element-ui';import store from'@/store';import router from'@/router';import{ setToken, getToken, removeToken }from"@/utils/cookies";// create an axios instanceconst service = axios.create({
baseURL: store.state.baseDomain,// http://localhost:21021/// withCredentials: true, // send cookies when cross-domain requests//timeout: 5000 // request timeout//`xsrfCookieName`是要用作 xsrf 令牌的值的cookie的名称
xsrfCookieName:'XSRF-TOKEN',// default// `xsrfHeaderName`是携带xsrf令牌值的http头的名称
xsrfHeaderName:'X-XSRF-TOKEN',// default})// request interceptor
service.interceptors.request.use(config=>{// do something before request is sentlet token =getToken();if(token !=undefined&& token !=''){// let each request carry token// ['X-Token'] is a custom headers key// please modify it according to the actual situation
config.headers['Authorization']='Bearer '+ token;}return config
},error=>{// do something with request error// console.log(error) // for debugreturn Promise.reject(error)})// response interceptor
service.interceptors.response.use(/**
* If you want to get http information such as headers or status
* Please return response => response
*//**
* Determine the request status by custom code
* Here is just an example
* You can also judge the status by HTTP Status Code
*/response=>{const res = response.data
if(res.__abp){returnhandleResponse(response)}// if the custom code is not 20000, it is judged as an error.if(response.status !==200){Message({
message: res.message ||'Error',
type:'error',
duration:5*1000})// 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;if(res.code ===50008|| res.code ===50012|| res.code ===50014){// to re-login
MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again','Confirm logout',{
confirmButtonText:'Re-Login',
cancelButtonText:'Cancel',
type:'warning'}).then(()=>{
store.dispatch('resetToken').then(()=>{
location.reload()})})}return Promise.reject(newError(res.message ||'Error'))}else{return res
}},error=>{// console.log('response error =>', error.response) // for debugif(error.response.data.__abp){returnhandleResponse(error.response)}Message({
message: error.message,
type:'error',
duration:5*1000})return Promise.reject(error)})/**
* 请求结果重新组织
* 参考 Abp 的 js 是 abp.ng.js
* @param {*} response
*/functionhandleResponse(response){var originalData = response.data
if(originalData.success ===true){
response.data = originalData.result
return response
}elseif(originalData.success ===false){// var messagePromise = nullif(response.status ==401&& response.config.abpHandleError !==false){// abp.ng.http.handleUnAuthorizedRequest(messagePromise, originalData.targetUrl);// 会话过期,跳转到登录页
store.dispatch('resetToken').then(_=>{
router.push(`/login?redirect=${location.hash.replace('#','')}${location.search}`).catch(()=>{})})
originalData.error.message ='为了您的帐号安全,请重新登录';}if(originalData.error){if(response.config.abpHandleError !==false){
Message.error(originalData.error.message ||'请求出错了!!!')}}else{
originalData.error = defaultError
}
response.data = originalData.error
return Promise.reject(response)}else{// not wrapped resultreturn Promise.reject(response)}}
window.request = service;exportdefault service
直接上代码import axios from 'axios';import { MessageBox, Message } from 'element-ui';import store from '@/store';import router from '@/router';import { setToken, getToken, removeToken } from "@/utils/cookies";// create an axios instanceconst service = a