微信小程序 网络请求使用封装好的mina-request
1、安装、安装不了的时候使用手机热点
npm install mina-request
2、构建npm
3、使用
import WxRequest from 'mina-request'
import {getStorage,clearStorage,setStorage} from './storage'
import {ApiPathConst,DESKeyConst} from './constVar'
// 对 WxRequest 进行实例化 const instance = new WxRequest({ baseURL: ApiPathConst, //'https://ykzs.sstms.net/zhensuoapi', // timeout: 60000, // 超时时长 isLoading: false // 是否使用默认的 loading 效果 }) // 添加请求拦截器 instance.interceptors.request = (config) => { // 获取本地存储的token令牌 const token = getStorage('token'); //console.log("拦截器token",token) if(token != undefined && token !=""){ config.header["Authorization"] = "Bearer " + token; } else{ //要重置为空否则remove token后,继续请求还是会带之前的token config.header["Authorization"] = ""; } return config } // 添加响应拦截器 instance.interceptors.response = async (response) => { //console.log(response) // response.isSuccess = true,代码执行了 wx.request 的 success 回调函数 // response.isSuccess = false,代码执行了 wx.request 的 fail 回调函数 // response.statusCode // http 响应状态码 // response.config // 网络请求请求参数 // response.data 服务器响应的真正数据 // 对响应数据做点什么 const {isSuccess,data} = response if(!isSuccess){ toast({ title:'网络异常', icon:'error' }) return Promise.reject(response) } let errorMsg = "" switch(data.status){ case 200: return data //成功返回data case 401: //未登录 //重新登录 retryLogin(1) return Promise.reject(response) case 403: //没权限 const res = await modal({ content:'没有操作权限', showCancel:false }) // if(res){ // clearStorage() // wx.navigateTo({ // url: '/pages/login/login', // }) // } return Promise.reject(response) case 429: //ip限流 errorMsg = "刷新次数过多,请稍事休息重试!" break case 404: errorMsg = "失败!访问接口不存在" break case 500: errorMsg = data.msg break case 405: errorMsg = "失败!请求http方法错误" break case 415: errorMsg = "失败!参数没有指定Body还是Query" break default: errorMsg = "程序出现异常,请联系客服" break } if(errorMsg !=""){ toast({ title:errorMsg, icon:'error' }) //return Promise.reject(response) } return response } //微信登录 export const requestWxLogin = async (params)=>{ return await instance.get('/api/Login/wxOnLogin/',params) }