Skip to content
导航

默认配置

默认配置

用于设置作用于每个请求的配置项默认值。

配置合并策略

默认值

在不更改默认配置的情况下,它依然会存在一些默认值,在 defaults.ts 中定义,大概长下面这样。

ts
{
  // 适配器,在支持的平台中有值。
  // 对于不支持平台而言,此值始终为 undefined,需要您手动适配。
  adapter: getDefaultAdapter(),

  // 请求头
  headers: {
    // 通用请求头
    common: {
      Accept: 'application/json, text/plain, */*',
    },
    options: {}, // OPTIONS 方法请求头
    get: {}, // GET 方法请求头
    head: {}, // HEAD 方法请求头
    post: {}, // POST 方法请求头
    put: {}, // PUT 方法请求头
    patch: {}, // PATCH 方法请求头
    delete: {}, // DELETE 方法请求头
    trace: {}, // TRACE 方法请求头
    connect: {}, // CONNECT 方法请求头
  },

  // 校验状态码
  validateStatus(status: number): boolean {
    return status >= 200 && status < 300;
  },

  // 返回的数据格式
  dataType: 'json',

  // 响应的数据类型
  responseType: 'text',

  // 超时时长
  timeout: 10000,
}
{
  // 适配器,在支持的平台中有值。
  // 对于不支持平台而言,此值始终为 undefined,需要您手动适配。
  adapter: getDefaultAdapter(),

  // 请求头
  headers: {
    // 通用请求头
    common: {
      Accept: 'application/json, text/plain, */*',
    },
    options: {}, // OPTIONS 方法请求头
    get: {}, // GET 方法请求头
    head: {}, // HEAD 方法请求头
    post: {}, // POST 方法请求头
    put: {}, // PUT 方法请求头
    patch: {}, // PATCH 方法请求头
    delete: {}, // DELETE 方法请求头
    trace: {}, // TRACE 方法请求头
    connect: {}, // CONNECT 方法请求头
  },

  // 校验状态码
  validateStatus(status: number): boolean {
    return status >= 200 && status < 300;
  },

  // 返回的数据格式
  dataType: 'json',

  // 响应的数据类型
  responseType: 'text',

  // 超时时长
  timeout: 10000,
}

设置配置项

可以设置配置项默认值。

列举部分示例:

ts
import axios from 'axios-miniprogram';

// 基础服务器地址
axios.defaults.baseURL = 'https://api.com';

// 通用请求头
axios.defaults.headers.common['Content-Type'] = 'application/json';

// POST 方法请求头
axios.defaults.headers.post['Content-Type'] =
  'application/x-www-form-urlencoded';

// 超时时间
axios.defaults.timeout = '60000';

// 校验状态码
axios.defaults.validateStatus = (status) => {
  return status === 200;
};

// 错误处理
axios.defaults.errorHandler = (error) => {
  console.log('出错了');
};

// 监听上传进度
axios.defaults.onUploadProgress = (event) => {
  console.log('上传中:' + event.progress);
};
import axios from 'axios-miniprogram';

// 基础服务器地址
axios.defaults.baseURL = 'https://api.com';

// 通用请求头
axios.defaults.headers.common['Content-Type'] = 'application/json';

// POST 方法请求头
axios.defaults.headers.post['Content-Type'] =
  'application/x-www-form-urlencoded';

// 超时时间
axios.defaults.timeout = '60000';

// 校验状态码
axios.defaults.validateStatus = (status) => {
  return status === 200;
};

// 错误处理
axios.defaults.errorHandler = (error) => {
  console.log('出错了');
};

// 监听上传进度
axios.defaults.onUploadProgress = (event) => {
  console.log('上传中:' + event.progress);
};

设置平台配置项

可以设置平台特有配置项默认值,具体情况取决于平台特性。

微信小程序示例:

ts
import axios from 'axios-miniprogram';

// 开启 http2
axios.defaults.enableHttp2 = true;

// 开启 quic
axios.defaults.enableQuic = true;

// 开启 cache
axios.defaults.enableCache = true;

// 开启 HttpDNS 服务。
axios.defaults.enableHttpDNS = true;

// HttpDNS 服务商 Id。
axios.defaults.httpDNSServiceId = '123';

// wifi 下使用移动网络发送请求
axios.defaults.forceCellularNetwork = false;
import axios from 'axios-miniprogram';

// 开启 http2
axios.defaults.enableHttp2 = true;

// 开启 quic
axios.defaults.enableQuic = true;

// 开启 cache
axios.defaults.enableCache = true;

// 开启 HttpDNS 服务。
axios.defaults.enableHttpDNS = true;

// HttpDNS 服务商 Id。
axios.defaults.httpDNSServiceId = '123';

// wifi 下使用移动网络发送请求
axios.defaults.forceCellularNetwork = false;

想要了解更多请自行参阅对应平台文档。

设置自定义配置项

可以设置自定义配置项默认值。

ts
import axios from 'axios-miniprogram';

// 出错时显示错误信息
axios.defaults.showError = true;
// 请求时自动 loading
axios.defaults.showLoading = true;

// 错误处理
axios.defaults.errorHandler = (error) => {
  if (axios.isAxiosError(error)) {
    // 显示错误信息
    if (error.config.showError) {
      wx.showToast({
        title: error.response.data.errMsg,
      });
    }
  }
};

// 请求拦截器
axios.interceptors.request.use((config) => {
  // 自动显示 loading
  if (config.showLoading) {
    wx.showLoading();
  }
  return config;
});

// 响应拦截器
axios.interceptors.response.use((response) => {
  // 自动隐藏 loading
  if (response.config.showLoading) {
    wx.hideLoading();
  }
  return response;
});
import axios from 'axios-miniprogram';

// 出错时显示错误信息
axios.defaults.showError = true;
// 请求时自动 loading
axios.defaults.showLoading = true;

// 错误处理
axios.defaults.errorHandler = (error) => {
  if (axios.isAxiosError(error)) {
    // 显示错误信息
    if (error.config.showError) {
      wx.showToast({
        title: error.response.data.errMsg,
      });
    }
  }
};

// 请求拦截器
axios.interceptors.request.use((config) => {
  // 自动显示 loading
  if (config.showLoading) {
    wx.showLoading();
  }
  return config;
});

// 响应拦截器
axios.interceptors.response.use((response) => {
  // 自动隐藏 loading
  if (response.config.showLoading) {
    wx.hideLoading();
  }
  return response;
});

配置合并策略

默认配置和请求配置将会按优先级进行合并。

其中:

  1. urlmethoddatauploaddownload 只从 config 取值。
  2. headersparams 会分别进行深度合并。
  3. 其余属性则会优先从 config 取值。

具体配置合并策略请参阅 mergeConfig.ts