tplus-api
Version:
tplus api invoke
83 lines (78 loc) • 2.87 kB
text/typescript
import axios from 'axios';
var QS = require('qs');
import tools from '../util/tools';
import User from '../model/User';
import UIConfirm from '../components/UIConfirm';
//param post参数 method 方法 isJsonString 是否转换为json字符串 isFree 是否需要认证信息
const tplusAjaxReq = (param:object, method:string, isJsonString?:boolean, isFree?:boolean, query?:string , axiosRequestConfig?:any) =>{
param = param || {};
method = method || '';
isJsonString = isJsonString || false;
let requestObj = {};
//调用REST 传递的是单参数 String类型
if(true==isJsonString) {
requestObj = QS.stringify({
'Apis':JSON.stringify({
'Args':{
'Param':JSON.stringify(param)
},
'Method':method
})
});
} else {
requestObj = QS.stringify({
'Apis': JSON.stringify({
'Args': param,
'Method': method
})
});
}
if(!User.isLogined()){
UIConfirm.show(`用户信息丢失,请保存当前操作数据后,重新登录!`,()=>{
User.logout(null,false);
});
return;
}
const user = User.restore();
let config = {baseURL: user.channel.targetURL};
if(axiosRequestConfig){
config = {...config,...axiosRequestConfig}
}
var ajax = axios.create(config);
var url = 'api/rest';
if(isFree){
url = url + '?IsFree=1&methodName='+method+'&userId='+user.userId +'&orgId='+user.orgId;
}else{
url = url + '?methodName='+method+'&userId='+user.userId +'&orgId='+user.orgId;
}
var user_req_id =`${user.userId}x${new Date().getTime().toString(16)}`;
url += '&user_req_id=' + user_req_id;
if(query){
url += '&' + query;
}
const startTime = new Date().getTime();
return ajax.post(url, requestObj)
.then(resp=>{
const endTime = new Date().getTime();
console.log(`tApi:请求接口[${method}]成功,消耗时间${endTime - startTime}ms,时间${tools.sysTime()}`);
return Promise.resolve(resp);
}).catch(err => {
const endTime = new Date().getTime();
console.error(`tApi:请求接口[${method}]失败,消耗时间${endTime - startTime}ms,时间${tools.sysTime()},错误信息->`,err);
return Promise.reject(err);
});
}
const tplusApi = async (param:object, method:string, isJsonString?:boolean, isFree?:boolean, query?:string , axiosRequestConfig?:any):Promise<object|string> => {
const resp = await tplusAjaxReq(param,method,isJsonString,isFree, query, axiosRequestConfig);
if(resp == undefined){
return "";
}
let json = resp.data.Value;
if(typeof(json) == 'string'){
if(tools.isJsonStr(json)){
json = JSON.parse(resp.data.Value);
}
}
return json;
}
export default tplusApi;