request函数
export default function request(url, params, options,orgCodeFlag) {
orgCodeFlag = orgCodeFlag==null||orgCodeFlag=='undefined'?true:orgCodeFlag
const opts = setOptions(params, options, orgCodeFlag);
return fetch(url, opts)
.then(checkStatus)
.then(parseJSON)
.then(data => ({
...data
}))
.catch(err => ({err}));
}
请求头、请求体参数设置
const setOptions = (params, options, orgCodeFlag = true) => {
var sessionId = sessionStorage.getItem("commons-session");
if (util.isEmpty(sessionId) || sessionId == "null" || sessionId == "undefined"){
sessionStorage.setItem("commons-session", guid());//guid()将返回一串随机的sessionId
sessionId = sessionStorage.getItem("commons-session");
}
localStorage.setItem("commons-session", sessionId);
try {
//获取登录后的用户信息,每次请求都将携带当前登录用户的orgCode
let _info = JSON.parse(sessionStorage.getItem('commons-user'));
if (orgCodeFlag && _info && _info.userInfo)) {
params = {...params,orgCode: _info.userInfo.orgCode}
}
} catch (error) {}
var opts = {
method: "POST",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'commons-session': sessionId, //可以设置一些请求头信息
},
body: JSON.stringify(params) //qs.stringify()
}; /* if (options) { opts.body = JSON.stringify(params) } */
return opts;}
响应判断
function checkStatus(response) {
if (response.status >= 200 && response.status < 300) {
return response;
}
const error = new Error(response.statusText);
error.response = response;
throw error;
}
响应结果转换
function parseJSON(response) {
return response.json();
}
在独立的services.js中使用
1、引入request.js文件
2、接口请求示例
export async function getApi(params) {
return await request("/api/xxxxx", params);
};
页面中使用示例
1、引入services.js文件,可以用 * 的方式把所有的都引入,也可以用结构的方式引入所需要的,具体视情况而定
import * as services from './services.js'
2、使用
services.getApi({param1:'123',param2:'abc'}).then( res => {
if(res.code==0){
//处理res.data的执行语句
//...
}else{
//其他情况的处理...
}
}).catch( err => {
//错误的捕获....
})