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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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