1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import baseURL from '@/api/baseURL';
- let toastFlag = true; // msg toast提示 true:可提示
- async function goLogin(vm, msg) {
- // 去到登录页
- if (!toastFlag) return;
- await vm.$c.toast({ title: msg, mask: true });
- // 删除用户信息并且跳到登录页
- vm.$store.dispatch('user/ClearUserInfo');
- }
- module.exports = (vm) => {
- // 初始化请求配置
- uni.$u.http.setConfig((config) => {
- /* config 为默认全局配置*/
- config.baseURL = baseURL;
- config.timeout = 1000 * 60;
- return config;
- });
- // 请求拦截
- uni.$u.http.interceptors.request.use(
- (config) => {
- config.data = config.data || {};
- // 根据custom参数中配置的是否需要token,添加对应的请求头
- let token = vm.$store.state.user.token;
- if (token) {
- config.header['Authorization'] = token;
- }
- return config;
- },
- (config) => {
- return Promise.reject(config);
- }
- );
- // 响应拦截
- uni.$u.http.interceptors.response.use(
- (res) => {
- let data = res.data;
- const msg = data?.msg || '网络繁忙,请稍后再试';
- if (data.code === 200) {
- toastFlag = true; // 可提示
- if (res.config.header.resDetail) {
- return res; // 代表返回详情结果(包含响应头)
- }
- // 成功
- return res.data;
- }
- if (data.code === 401) {
- // 登录失效
- goLogin(vm, msg); // 退出登录并且清空用户信息
- toastFlag = false; // 不可提示
- return res.data;
- }
- vm.$c.toast(msg);
- return Promise.reject(`code:${data.code},msg:${msg}`);
- },
- async (res) => {
- // 对错误做出提示
- const msg = res.data?.msg || '网络繁忙,请稍后再试';
- if (res.statusCode === 401) {
- goLogin(vm, msg);
- toastFlag = false; // 不可提示
- return Promise.reject(res);
- }
- vm.$c.toast(msg);
- return Promise.reject(`code:${res.data.code},msg:${msg}`);
- }
- );
- };
|