//导入模块. 包提供的类 import WxRequest from 'mina-request' //导入封装的本地存储操作模块 import { getStorage, clearStorage } from './storage' //导入封装的增强Api import { toast } from './extendApi' // 对 WxRequest 进行实例化 const instance = new WxRequest({ /**/ baseURL: 'http://172.20.10.2:8600/student-api', // 使用时请换成真实接口 timeout: 1000, // 超时时长 isLoading: false // 是否使用默认的 loading 效果 }) // //请求拦截器(在请求发送之前对请求参数进行新增或者修改) // instance.interceptors.request = (config) => { // // 在发送请求之前做些什么 // //访问令牌token? // //获取token,并补充到请求头中 // const token = getStorage('token') // //判断token是否存在 // if (token){ // config.header['token'] = token // } // return config // } //添加响应拦截器(在服务器相应数据以后,对返回的数据进行逻辑处理) instance.interceptors.response = async(response) => { // 对响应数据做点什么 // response.statusCode // http 响应状态码 // response.config // 网络请求请求参数 // response.data 服务器响应的真正数据 //reponse 服务器相应的数据 只不过数据被wx.request 进行了一层包装 // console.log(response.data) //response.config 封装的包里面提供的 config 属性 是请求的参数信息 //可以使用请求参数进行代码的调试 //response.data 服务器真正响应的数据 //response.isSuccess 判断代码执行了哪一个回调函数 //ture--> 执行wx.request 的success回调函数 //flase ->fail回调函数 //从response对象中结构两个数据 const {isSuccess, data } = response //isSuccess=false 网络有问题 if(!isSuccess){ toast({ title: '网络异常请重试', icon: 'error' }) return Promise.reject(response) } //isSuccess = true -->得到success回调函数 //需要对服务器返回的参数进行逻辑判断 //需要对后端返回的业务状态码进行判断 //状态码==200 接口调用成功,服务器成功返回了数据 //状态码==208 没有token或者token失效 需要用户重新登录 //else 其他异常 ,给用户统一进行提示 switch (data.code) { case 200: //状态码==200 接口调用成功,服务器成功返回了数据,只需要将数据简化以后返回即可 return data case 208: //返回一个模态对话框 const res = wx.showModal({ content: '鉴权失败,请重新登录', showCancel: false }) if (res) { //既然用户需要重新进行登录,不妨清除掉已经过期了的token clearStorage() wx.navigateTo({ url: '/pages/login/login',//重新登陆 }) } return Promise.reject(response) default: toast({ title:'程序出现异常,请联系客服或稍后重试' }) } //return response } //导出实例 export default instance