1.0.7 • Published 4 years ago
saas-fetch-choice v1.0.7
必看内容
封装
中间件功能简介
承载着之前项目内request.js的功能,按照saas-fetch的规范进行组装数据,所有接口仅有两种状态: 1. 业务成功
return Promise.resolve({
success: true,
status: `${response.status}`,
response,
data: response,
});
- 业务失败
return Promise.resolve({
success: false,
status: response.status,
response,
error: data.msg,
});
结果返回给saas-fetch 后,success:true会通过Promise.resolve返回;success:false会通过Promise.reject返回。不再统一处理message.err。业务中使用try catch或者then catch的方法处理saas-fetch返回值。
封装思路
核心层中间件做数据组装,将后端返回的数据按规范组装,交给saas-fetch。仅当业务成功时返回success: true,其他情况下均为false。 1. 包装请求头,发出fetch请求。 2. 接收响应数据,按规范组装数据。
- 是文件流,直接下载文件,并抛出success: true,
- 是普通接口
- http status是否以2开头
- 业务成功返回success:true
- 业务失败返回success:false
- http status是否为401,token无效
- 其他情况返回success:fasle
- http status是否以2开头
注:接口返回401后,会执行刷新token的方法,刷新成功后重新调用接口。
使用
import Fetch from '@ali/saas-fetch';
import MChoiceBoh from '@/common/middlewares/saas-fetch-choiceBoh/index';
const config = {
typeName: 'MChoiceBoh',
};
const fetch = Fetch.create();
fetch.registerFetcher('MChoiceBoh', MChoiceBoh);
fetch.setupConfig(config);
fetch.request({url: '/choice-cloud-report/basic/queryArea', param: { id: 1 }}).then(res => console.log('业务成功', res)).catch(err => console.log('业务失败', err));