joywok-material-components
Version:
<h1 align="center"> Joywok Material Components </h1>
99 lines (96 loc) • 2.62 kB
JavaScript
;
// import fetch from 'dva/fetch';
const axios = require('axios');
import AloneTip from 'joywok-material-components/lib/tips/aloneTip';
window.componentsRequestTip = null;
function checkStatus(response) {
if (response.status >= 200 && response.status < 300) {
return response;
}
const error = new Error(response.statusText);
error.response = response;
throw error;
}
function checkError(response,url,requestParams){
if(response['JMStatus'] && response['JMStatus']['errmemo']){
window.componentsRequestTip = AloneTip({type:'error',duration:2000,hasclose:false,autoHideDuration:2000,message:response['JMStatus']['errmemo']})
}
}
function combineUrlParam(url,params){
if(params){
if(url.indexOf('?')!=-1){
url+='&'
}else{
url+='?'
}
}
let newArray = [];
_.each(params,function(item,key){
if(item){
newArray.push(key+'='+item)
}
})
return url+''+newArray.join('&');
}
export default async function request(url, options) {
let requestParams;
switch (options.method){
case 'POST':
requestParams = _.extend({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json; charset=utf-8'
}
},options);
break;
case 'PUT':
requestParams = _.extend({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json; charset=utf-8'
}
}, options);
break;
case 'PATCH':
case 'DELETE':
requestParams = options;
break;
default:
requestParams = {
method: 'GET'
}
url = combineUrlParam(url,options.body);
break;
}
try{
requestParams['credentials'] = 'include';
if(window.AccessToken){
requestParams['headers'] = _.extend({}, requestParams['headers'],{'Access-Token':window.AccessToken})
}
if(requestParams.body) requestParams.data = requestParams.body;
const response = await axios(url, requestParams);
checkStatus(response,url,requestParams);
const data = await response.data;
window.componentsRequestTip && window.componentsRequestTip.close();
checkError(data,url,requestParams);
// 拼装返回值
const ret = {
data,
headers: {},
};
return ret;
}
catch(err){
let response = err.response;
let data = response ? await response.data : {};
if (data.message) {
AloneTip({
type:'error',
duration:2000,
hasclose:false,
autoHideDuration:2000,
message:data.message ? data.message : '未知错误'
})
}
}
}