/** * uview-plus http 请求配置 */ import { getToken, clearAll } from './cache.js' import envConfig from '@/config/env.js' const BASE_URL = envConfig.BASE_URL const CODE = { SUCCESS: 0, NEED_LOGIN: 1009 } export function initRequest(http) { http.setConfig((config) => { config.baseURL = BASE_URL config.timeout = 20000 config.header = { 'Content-Type': 'application/json' } return config }) http.interceptors.request.use( (config) => { const token = getToken() if (token) { config.header.Authorization = `Bearer ${token}` } return config }, (error) => Promise.reject(error) ) http.interceptors.response.use( (response) => { const { code, data, list, msg } = response.data if (code === CODE.SUCCESS) { return { code, data, list, msg } } if (code === CODE.NEED_LOGIN) { clearAll() uni.showToast({ title: msg || '请先登录', icon: 'none' }) setTimeout(() => { uni.reLaunch({ url: '/pages/login/index' }) }, 1500) return Promise.reject({ code, msg: msg || '请先登录' }) } uni.showToast({ title: msg || '请求失败', icon: 'none' }) return Promise.reject({ code, msg: msg || '请求失败' }) }, (error) => { uni.showToast({ title: '网络请求失败', icon: 'none' }) return Promise.reject({ code: -1, msg: error.errMsg || '网络请求失败' }) } ) } export function get(url, params = {}, config = {}) { return uni.$u.http.get(url, { params, ...config }) } export function post(url, data = {}, config = {}) { return uni.$u.http.post(url, data, config) } export function put(url, data = {}, config = {}) { return uni.$u.http.put(url, data, config) } export function del(url, data = {}, config = {}) { return uni.$u.http.delete(url, { data, ...config }) } export function upload(url, { filePath, name = 'file', formData = {} } = {}) { return uni.$u.http.upload(url, { filePath, name, formData }) } export function download(url, config = {}) { return uni.$u.http.download(url, config) } export default { get, post, put, del, upload, download }