uniapp 封装request请求
request.js
import store from '@/store' import config from '@/config' import { getToken, getImei } from '@/utils/auth' import errorCode from '@/utils/errorCode' import { toast, showConfirm, tansParams } from '@/utils/common' let timeout = 1000 * 60 // const baseUrl = config.baseUrl // 是否显示重新登录 let isRelogin = { show: false }; const request = config => { // 是否需要设置 token const isToken = (config.headers || {}).isToken === false config.header = config.header || {} if (getToken() && !isToken) { config.header['Authorization'] = 'Bearer ' + getToken() } // get请求映射params参数 if (config.params) { let url = config.url + '?' + tansParams(config.params) url = url.slice(0, -1) config.url = url } return new Promise((resolve, reject) => { const baseUrl = store.state.baseUrl.baseUrl uni.request({ method: config.method || 'get', timeout: config.timeout || timeout, url: config.baseUrl || baseUrl + config.url, data: config.data, header: config.header, dataType: 'json' }).then(response => { let [error, res] = response if (error) { // z-paging组件处理错误状态列表显示 uni.$emit('z-paging-error-emit') if(!config.notoast) toast('网络异常') reject('网络异常') return } const code = res.data.code || 200 const msg = errorCode[code] || res.data.message || errorCode['default'] // 过期 if (code === 401) { const imei = getImei() // 如果记住密码 if(imei){ // 用生成的码自动登录 store.dispatch('loginImei',imei).then(res=>{ store.dispatch('GetInfo').then(res => { uni.reLaunch({ url: "/pages/index" }) }) }).catch(err=>{ // 自动登录出错,手动登录 if(!isRelogin.show){ isRelogin.show = true; showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(res => { isRelogin.show = false; store.dispatch('FedLogOut').then(res => { uni.reLaunch({ url: '/pages/login' }) }) }) } }) }else{ if(!isRelogin.show){ isRelogin.show = true; showConfirm('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(res => { isRelogin.show = false; store.dispatch('FedLogOut').then(res => { uni.reLaunch({ url: '/pages/login' }) }) }) } } reject('无效的会话,或者会话已过期,请重新登录。') } else if (code === 500) { uni.$emit('z-paging-error-emit') if(!config.notoast) toast(msg) reject('500') } else if (code !== 200) { uni.$emit('z-paging-error-emit') if(code === 601){ reject(res.data) }else{ if(!config.notoast) toast(msg) reject(code) } } resolve(res.data) }) .catch(error => { uni.$emit('z-paging-error-emit') let { message } = error if (message === 'Network Error') { message = '网络错误' } else if (message.includes('timeout')) { message = '请求超时' } else if (message.includes('Request failed with status code')) { message = '系统接口' + message.substr(message.length - 3) + '异常' } if(!config.notoast) toast(message) reject(error) }) }) } export default request
store文件查看socket博客
调用
import request from '@/utils/request' import { security } from '@/api/config' // 新增违章上报 export function addViolation(data) { return request({ url: security + '/violation/addViolation', method: 'post', data }) }
本文来自博客园,作者:小虾米吖~,转载请注明原文链接:https://www.cnblogs.com/LindaBlog/p/18271206