import axios from 'axios';
import { ContextService } from '@wit-vue/common';
import { IObjectConfig } from '../../model/interface/axios.interface';
import { StorageService } from '@wit-vue/storage';
import InterceptorService from './interceptor';
/* 创建实例 */
const instance = axios.create({
baseURL: ContextService.getContext().config.get('GRACE_SERVICE_URL') + '/service/v1',
headers: {
'Content-Type': 'application/json',
'Cache-Control': 'no-cache'
},
responseType: 'json',
validateStatus: status => {
return status >= 200 && status < 500;
}
});
instance.interceptors.request.use(
async config => {
await StorageService.getSessionStorageByKey('token').then(assertion => {
let assertionValue = assertion ? assertion : sessionStorage.getItem('token');
const token = assertionValue;
if (token) {
config.headers['Access-Token'] = token;
}
});
return config;
},
(error: any) => {
return Promise.reject(error);
}
);
instance.interceptors.response.use(
response => {
// 处理json问题
if (response.config.url.endsWith('.json')) {
return response.data;
}
if (response.data.code === '1') {
if (response.data.data || response.data.data === null) {
return response.data.data;
} else {
return response.data;
}
} else {
let url = response.config.baseURL + response.config.url;
InterceptorService.getHintMessage(response.data, url);
return response.data;
}
},
error => {
return Promise.reject(error);
}
);
/* 输出实例 */
export const RestfulClientService = {
get(obj: IObjectConfig) {
return Promise.resolve(
instance.get(obj.url, {
params: obj.data ? obj.data : {}
})
);
},
post(obj: IObjectConfig) {
return Promise.resolve(instance.post(obj.url, obj.data ? obj.data : {}));
},
delete(obj: IObjectConfig) {
return Promise.resolve(
instance.delete(obj.url, {
data: obj.data ? obj.data : {}
})
);
},
put(obj: IObjectConfig) {
return Promise.resolve(instance.put(obj.url, obj.data ? obj.data : {}));
},
patch(obj: IObjectConfig) {
return Promise.resolve(
instance.patch(obj.url, {
data: obj.data ? obj.data : {}
})
);
}
};
网友评论