|
|
//导入模块. 包提供的类
|
|
|
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 |