封装微信小程序的全局ajax

微信小程序中app.js的变量方法是可以通过getApp()暴露在其他页面的

通过getApp()我们可以封装ajax,这样就不用一个页面一个页面的去写request了

也不用一遍又一遍的去写重复的请求url头部

  ajax: {
    get: (url, data, header) => {
      return getApp().ajax.request(url, data, header, ‘GET‘)
    },
    post: (url, data, header) => {
      return getApp().ajax.request(url, data, header, ‘POST‘)
    },
    request(url, data, header = {}, method) {
      const vm = this
      wx.showLoading()
      if (wx.getStorageSync(‘userInfo‘).accessToken) {
        let token = {
          "access-token": wx.getStorageSync(‘userInfo‘).accessToken
        }
        Object.assign(header, token)
      }
      return new Promise((resolve, reject) => {
        wx.request({
          url: ‘https://‘ + url,
          data,
          header,
          method,
          success(res) {
            wx.hideLoading()
            if (res.statusCode == 200) {
              if (res.data.code == 200) {
                resolve(res.data)
              } else if (res.data.code == 401) {
                wx.showToast({
                  title: res.data.msg || ‘请重新登录!‘,
                  icon: "none"
                })
                reject(res.data)
                wx.navigateTo({
                  url: `/pages/index/index`
                })
              } else if (res.data.code == 402) {
                reject(res.data)
                wx.navigateTo({
                    url: `/pages/login/login`
                  })
              } else if (res.data.code == 403) {
                wx.showToast({
                  title: res.data.msg || ‘没有权限!‘,
                  icon: "none"
                })
                reject(res.data)
              } else {
                wx.showToast({
                  title: res.data.msg || ‘请求失败!‘,
                  icon: "none"
                })
                reject(res.data)
              }
            } else {
              wx.showToast({
                title: res.data.msg || ‘请求失败!‘,
                icon: "none"
              })
              reject(res)
            }
          },
          fail() {
            reject({
              msg: ‘请求失败‘,
              url: vm.withBaseURL ? vm.baseURL + url : url,
              method,
              data
            })
          }
        })
      })
    },
}

  在其他页面调用也很简单

    getApp().ajax.get(`/api/?time=${this.data.data}`).then(res => {
     console.log(res)
      })


    getApp().ajax.post(‘/api/‘, this.data.data).then(res => {
        console.log(res)
      })

  

封装微信小程序的全局ajax

上一篇:MD中bitmap源代码分析--状态机实例


下一篇:C++ 中权限问题的思考