You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
3.1 KiB

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