关于局部mock
来源:4-2 登录交互开发

weixin_慕前端5001913
2021-10-28
在request请求函数中,通过判断传来的options.mock是否等于undefined,等于的话直接用options.mock赋值给config.mock,这样虽然明面上业务走得通,但总感觉不太妥当,config中的mock属于全局mock,而options中的mock只是局部该次请求中的mock,这样的赋值,相当于每次请求都会改变config中的mock值,作为配置文件中的值,频繁改变不合适吧。我觉得可以在请求中判断options.mock,如果是undefined则取config.mock,不是则取options.mock
如在非pro的环境下,service.defaults.baseURL = (typeof options.mock != ‘undefined’ ? options.mock : config.mock) ? config.mockApi : config.baseApi
纯属个人见解
1回答
-
你理解的很到位,这里确实有一点不太妥,那就是频繁修改全局的mock。
正确的逻辑应该是:先判断局部mock,在判断全局mock。
// 判断全局mock是否开启
let isMock = config.mock;
// 判断局部接口mock是否开启,局部mock可打开或者关闭,默认undefined
if (typeof mock != 'undefined') isMock = mock;
// 生产环境强制走baseApi;
if (['prod', 'pre'].includes(config.env)) {
service.defaults.baseURL = config.baseApi;
} else {
service.defaults.baseURL = isMock ? config.mockApi : config.baseApi;
}
012021-10-28
相似问题