UNPKG

joywok-material-components

Version:

<h1 align="center"> Joywok Material Components </h1>

99 lines (96 loc) 2.62 kB
"use strict"; // 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 : '未知错误' }) } } }