封装请求函数request——小程序端

209 阅读2分钟
/**
 * name: request.js
 * description: request请求处理
 * author: orange
 * date: 2020-6-2
 */


// export const baseURL = "";                           // 生产环境

// export const baseURL = 'http://114.118.8.241/api';   // 测试环境
// export const baseURL = "http://192.168.1.33:8083";       // 开发环境
export const baseURL = "http://192.168.1.9:8083";       // 欧阳
// export const baseURL = "http://192.168.1.8:8083";       // 启焜
// export const baseURL = "http://192.168.1.33:8083";       // 泽玉
// export const baseURL = "http://192.168.1.42:8083";       // 英宇
// export const baseURL = "http://dasd.nat300.top";       // 域名

// 常规的get请求
export function getRequest(url, data, loading = true) {
  // console.log(url,data)
  if (loading) {
    wx.showLoading({
      title: "加载中",
      mask: true
    });
  }
  return new Promise((resolve, reject) => {
    wx.request({
      url: baseURL + url,
      method: "GET",
      data,
      header: {
        "X-Auth0-Token": wx.getStorageSync('token'),   // 看自己是否需要
      },
      success: ({ data }) => {
        switch (data.code) {
          case 0:
            resolve(data)
            wx.hideLoading();
            break;
          case 40001:
          case -401:
            wx.hideLoading({
              success: res => {
                wx.showToast({
                  title: "登录已过期,请重新登录",
                  icon: "none"
                })
              }
            });
            wx.removeStorageSync('token')
            wx.removeStorageSync('userId')
            wx.removeStorageSync('loginStatus')
            resolve(data);
            setTimeout(() => {
              wx.redirectTo({
                url: '/pages/login/index',
              })
            }, 1500);
            break;

          default:
            reject(data);
            wx.hideLoading({
              success: res => {
                wx.showToast({
                  title: data.msg,
                  icon: "none",
                  duration: 1500
                })
              }
            });
            break;
        }
      },
      fail: err => {
        reject(err)
        wx.hideLoading();
      }
    })
  })
}

// 常规的post请求方式
export function postRequest(url, data, loading = true) {
  if (loading) {
    wx.showLoading({
      title: "加载中",
      mask: true
    });
  }
  return new Promise((resolve, reject) => {
    wx.request({
      url: baseURL + url,
      method: 'POST',
      data: data,
      header: {
        "X-Auth0-Token": wx.getStorageSync('token'),
      },
      success: ({ data }) => {
        switch (data.code) {
          case 0:
            resolve(data)
            wx.hideLoading();
            break;
          case 40001:
          case -401:
            wx.hideLoading({
              success: res => {
                wx.showToast({
                  title: "登录已过期,请重新登录",
                  icon: "none"
                })
              }
            });
            wx.removeStorageSync('token')
            wx.removeStorageSync('userId')
            wx.removeStorageSync('loginStatus')
            resolve(data);
            setTimeout(() => {
              wx.redirectTo({
                url: '/pages/login/index',
              })
            }, 1500);
            break;

          default:
            reject(data);
            wx.hideLoading({
              success: res => {
                wx.showToast({
                  title: data.msg,
                  icon: "none",
                  duration: 1500
                })
              }
            });
            break;
        }
      },
      fail: err => {
        reject(err)
        wx.hideLoading();
      },
    });
  });
};


// get和post统一处理
export function request({
  url = "",
  method = "get",
  params = {}, // url 上的参数
  data = {}, // body 参数
  loading = true,
}) {
  let query = ""
  url = baseURL + url

  if (loading) {
    wx.showLoading({
      title: "加载中",
      mask: true
    });
  }
  if (Object.keys(params).length) {
    Object.keys(params).forEach(key => {
      if (params[key]) {
        query += `${key}=${params[key]}&`
      }
    })
    query = query.slice(0, query.length - 1)
    url = url + "?" + query
  }

  return new Promise((resolve, reject) => {
    wx.request({
      url,
      method,
      data,
      header: {
        "X-Auth0-Token": wx.getStorageSync('token'),
      },
      success: ({ data }) => {
        switch (data.code) {
          case 0:
            resolve(data)
            wx.hideLoading();
            break;
          case 40001:
          case -401:
            wx.showToast({
              title: "登录已过期,请重新登录",
              icon: "none"
            })
            wx.removeStorageSync('token')
            wx.removeStorageSync('userId')
            wx.removeStorageSync('loginStatus')
            resolve(data);
            setTimeout(() => {
              wx.redirectTo({
                url: '/pages/login/index',
              })
            }, 1500);
            break;

          default:
            reject(data);
            wx.hideLoading({
              success: res => {
                wx.showToast({
                  title: data.msg,
                  icon: "none",
                  duration: 1500
                })
              }
            });
            break;
        }
      },
      fail: err => {
        reject(err)
        wx.hideLoading();
      }
    })
  })
}

// 以下封装函数未作处理,请谨慎使用

// post请求 直接将数据拼接在url后面
export function postParamsRequest(url, data, loading = false) {
  if (loading) {
    wx.showLoading({
      title: "加载中",
      mask: true
    });
  }
  return new Promise((resolve, reject) => {
    wx.request({
      url: baseUrl + url + data,
      method: 'POST',
      header: {
        "X-Auth0-Token": wx.getStorageSync('token'),
      },
      success: res => {
        if (res.data.code === 0) {
          resolve(res)
        } else {
          wx.showToast({
            title: res.data.msg,
            icon: "none"
          })
          resolve(res);
        }
      },
      fail: err => {
        reject(err)
      },
      complete: () => {
        wx.hideLoading();
      }
    });
  });
};


/**    data 要以对象的形式传进来
 * data:{
 *  key:"",
 *  value:""
 * }
 */
export function postQueryRequest(url, data, loading = false) {
  if (loading) {
    wx.showLoading({
      title: "加载中",
      mask: true
    });
  }
  return new Promise((resolve, reject) => {
    wx.request({
      url: baseUrl + url + '?' + data.key + '=' + data.value,
      method: 'POST',
      header: {
        "X-Auth0-Token": wx.getStorageSync('token'),
      },
      success: res => {
        if (res.data.code === 0) {
          resolve(res)
        } else {
          wx.showToast({
            title: res.data.msg,
            icon: "none"
          })
          resolve(res);
        }
      },
      fail: err => {
        reject(err)
      },
      complete: () => {
        wx.hideLoading();
      }
    });
  });
};