Skip to content
关注公众号,获取新课通知

request请求库封装


js
// request.js
export default {
  // 全局配置
  common: {
    baseUrl: "/api",
    header: {
      "Content-Type": "application/json;charset=UTF-8",
    },
    data: {},
    method: "GET",
    dataType: "json",
    token: true,
  },
  // 请求 返回promise
  request(options = {}) {
    // 组织参数
    options.url = this.common.baseUrl + options.url;
    options.header = options.header || this.common.header;
    options.data = options.data || this.common.data;
    options.method = options.method || this.common.method;
    options.dataType = options.dataType || this.common.dataType;
    options.token = options.token === false ? false : this.common.token;

    // 请求之前验证...
    // token验证
    if (options.token) {
      let token = uni.getStorageSync("token");
      // 二次验证
      if (!token) {
        uni.showToast({ title: "请先登录", icon: "none" });
        // token不存在时跳转
        return uni.reLaunch({
          url: "/pages/login/login",
        });
      }
      // 往header头中添加token
      options.header.token = token;
    }

    // 请求
    return new Promise((res, rej) => {
      // 请求中...
      uni.request({
        ...options,
        success: (result) => {
          // 返回原始数据
          if (options.native) {
            return res(result);
          }
          // 服务端失败
          if (result.statusCode !== 200) {
            if (options.toast !== false) {
              uni.showToast({
                title: result.data.data || "服务端失败",
                icon: "none",
              });
            }
            return rej(result.data);
          }
          // 其他验证...
          // 成功
          let data = result.data.data;
          res(data);
        },
        fail: (error) => {
          uni.showToast({ title: error.errMsg || "请求失败", icon: "none" });
          return rej(error);
        },
      });
    });
  },
  // get请求
  get(url, data = {}, options = {}) {
    options.url = url;
    options.data = data;
    options.method = "GET";
    return this.request(options);
  },
  // post请求
  post(url, data = {}, options = {}) {
    options.url = url;
    options.data = data;
    options.method = "POST";
    return this.request(options);
  },
  // delete请求
  del(url, data = {}, options = {}) {
    options.url = url;
    options.data = data;
    options.method = "DELETE";
    return this.request(options);
  },
};