美文网首页
小程序端app.js封装请求方法

小程序端app.js封装请求方法

作者: IT阿泽 | 来源:发表于2020-07-29 12:35 被阅读0次

app.js

//app.js

App({

  onLaunch: function () {

    let App = this;

    // 设置api地址

    App.setApiRoot();

  },

  globalData: {

    userInfo: null

  },

  api_root: '', // api地址

  appid:'',

  /**

   * 显示失败提示框

   */

  showError(msg, callback) {

    wx.showModal({

      title: '友情提示',

      content: msg,

      showCancel: false,

      success(res) {

        callback && callback();

      }

    });

  },

   /**

   * 设置api地址

   */

  setApiRoot() {

    let App = this;

    // App.api_root = config.config.host;

    let extConfig = wx.getExtConfigSync? wx.getExtConfigSync(): {}

    console.log(extConfig)

    App.appid = extConfig.attr.appid

    App.api_root = extConfig.attr.host;

  },

  /**

   * get请求

   */

  _get(url, data, success, fail, complete, check_login) {

    let App = this;

    wx.showNavigationBarLoading();

    // 构造请求参数

    data = Object.assign({

      token: wx.getStorageSync('token'),

      appid:App.appid  

    }, data);

    // if (typeof check_login === 'undefined')

    //   check_login = true;

    console.log(App.api_root) 

    // 构造get请求

    let request = () => {

      data.token = wx.getStorageSync('token');

      wx.request({

        url: App.api_root + url,

        header: {

          'content-type': 'application/json'

        },

        data,

        success(res) { 

          if (res.statusCode !== 200 || typeof res.data !== 'object') {

            console.log(res);

            App.showError('网络请求出错'); 

            return false;

          } 

          if (res.data.code === -1) {

            // 登录态失效, 重新登录

            wx.hideNavigationBarLoading();

            App.doLogin(() => {

              App._get(url, data, success, fail);

            });

          } else if (res.data.code === 0) {

            App.showError(res.data.msg);

            return false;

          } else {

            success && success(res.data);

          }

        },

        fail(res) {

          // console.log(res);

          App.showError(res.errMsg, () => {

            fail && fail(res);

          });

        },

        complete(res) {

          wx.hideNavigationBarLoading();

          complete && complete(res);

        },

      });

    };

    // 判断是否需要验证登录

    check_login ? App.doLogin(request) : request();

  },

  /**

   * post提交

   */

  _post_form(url, data, success, fail, complete) {

    wx.showNavigationBarLoading();

    let App = this;

    // 构造请求参数 

    data = Object.assign({

      token: wx.getStorageSync('token'), 

      appid:App.appid  

    }, data);

    data.token = wx.getStorageSync('token');

    wx.request({

      url: App.api_root + url,

      header: {

        'content-type': 'application/x-www-form-urlencoded',

      },

      method: 'POST',

      data,

      success(res) {

        if (res.statusCode !== 200 || typeof res.data !== 'object') {

          App.showError('网络请求出错');

          return false;

        }

        if (res.data.code === -1) {

          // 登录态失效, 重新登录

          App.doLogin(() => {

            App._post_form(url, data, success, fail);

          });

          return false;

        } else if (res.data.code === 0) {

          App.showError(res.data.msg, () => {

            fail && fail(res);

          });

          return false;

        }

        success && success(res.data);

      },

      fail(res) {

        // console.log(res);

        App.showError(res.errMsg, () => {

          fail && fail(res);

        });

      },

      complete(res) {

        wx.hideLoading();

        wx.hideNavigationBarLoading();

        complete && complete(res);

      }

    });

  },

   /**

   * 验证登录

   */

  checkIsLogin() {

    return wx.getStorageSync('token') != '';

  }, 

  /**

   * 授权登录

   */

  doLogin(callback) { 

    let App = this;

    // if (e.detail.errMsg !== 'getUserInfo:ok') {

    //   return false;

    // }

    wx.showLoading({

      title: "加载数据中...",

      mask: true

    }); 

    // 执行微信登录

    wx.login({ 

      success(res) {

        // 发送用户信息 

        App._post_form('login', {

          code: res.code,

        }, result => {

          // 记录token user_id

          wx.setStorageSync('token', result.data.token,);

          // 执行回调函数

          callback && callback();

        }, false, () => {  

          wx.hideLoading();

        });

      }

    }); 

  }

})

相关文章

网友评论

      本文标题:小程序端app.js封装请求方法

      本文链接:https://www.haomeiwen.com/subject/mcehrktx.html