123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import {wxToPromise} from "./wx";
- import config from "../model/config";
- import Route from "../model/route";
- import User from "../model/user";
- import {showLoading, toast} from "./utils";
- import storage from "./storage";
- const app = getApp();
- class Http {
- //T 可以通过重写errorHandler来覆盖默认的网络错误处理
- static async request({url, data, method = 'get', opt = {isLoading: false}},
- errorHandler = async (code, msg) => {
- if (code == 401) {
- await User.logout();
- Route.redirectLogin();
- }
- const title = Http._showError(code, msg)
- throw new Error(title)
- }) {
- const isLoading = opt.isLoading;
- if (isLoading) {
- showLoading();
- }
- let res
- try {
- let tokenObj = {};
- if (app.globalData.token) {
- tokenObj.Authorization = app.globalData.token;
- }
- res = await wxToPromise('request', {
- url: `${config.API}${url}`,
- data,
- method,
- header: {
- 'content-type': 'application/json',
- ...tokenObj
- }
- })
- } catch (e) {
- console.log('网络错误', e);
- // 代码逻辑异常、无网络、请求超时会走这里
- await errorHandler(-100)
- }
- if (isLoading) {
- wx.hideLoading()
- }
- if (res.statusCode == 200) {
- if (res.data.code == 200) {
- console.log(`网络请求${url}`, data, res.data);
- return res.data;
- }else {
- await errorHandler(res.data.code, res.data.msg, res.data.data);
- }
- } else {
- await errorHandler(res.statusCode)
- }
- }
- static _showError(errorCode, message = '') {
- const errorMessage = config.ERROR_MSG[errorCode];
- const title = errorMessage || message || '未知异常'
- console.log("错误提示", title)
- wx.showToast({
- title,
- icon: 'none',
- duration: 3000
- })
- return title;
- }
- }
- export default Http
|