axios-miniprogram/src/axios.ts

79 lines
1.9 KiB
TypeScript
Raw Normal View History

2020-04-16 00:23:24 +08:00
/*
* @Author: early-autumn
* @Date: 2020-04-15 12:45:18
* @LastEditors: early-autumn
2020-04-17 12:06:41 +08:00
* @LastEditTime: 2020-04-17 09:42:16
2020-04-16 00:23:24 +08:00
*/
2020-04-17 15:42:38 +08:00
import { AxiosRequestConfig, Data, AxiosResponse, AxiosBaseInstance, AxiosInstance } from './types';
2020-04-16 00:23:24 +08:00
import Axios from './core/Axios';
2020-04-17 00:18:59 +08:00
import Cancel from './cancel/Cancel';
import CancelToken from './cancel/CancelToken';
import isCancel from './cancel/isCancel';
import mergeConfig from './helper/mergeConfig';
2020-04-16 00:23:24 +08:00
import defaults from './helper/defaults';
/**
* Axios
*
2020-04-17 12:06:41 +08:00
* Axios
2020-04-16 00:23:24 +08:00
*/
2020-04-17 00:18:59 +08:00
function createInstance(config: AxiosRequestConfig): AxiosInstance {
2020-04-16 00:23:24 +08:00
const instance = new Axios(config);
/**
* axios
*
* @
*
* @param url :
* @param config :
*
* @
*
* @param url :
* @param config :
*/
2020-04-17 15:42:38 +08:00
function axios<T extends Data>(
2020-04-17 00:18:59 +08:00
url: AxiosRequestConfig | string,
config: AxiosRequestConfig = {}
2020-04-16 00:23:24 +08:00
): Promise<AxiosResponse<T>> {
2020-04-17 00:18:59 +08:00
let requestConfig: AxiosRequestConfig;
2020-04-16 00:23:24 +08:00
// 调用方式一处理请求配置
if (typeof url !== 'string') {
requestConfig = url;
}
// 调用方式二处理请求配置
else {
requestConfig = { ...config, url };
}
return instance.request(requestConfig);
}
// Axios 实例的所有属性和方法合并至 axios 函数
Object.assign(axios, instance);
return axios as AxiosInstance;
}
2020-04-17 12:06:41 +08:00
/**
* Axios
*/
2020-04-17 00:18:59 +08:00
const axios = createInstance(defaults);
// 添加 Axios 类
axios.Axios = Axios;
// 添加 create 工厂方法
2020-04-17 12:06:41 +08:00
axios.create = function create(config: AxiosRequestConfig): AxiosBaseInstance {
2020-04-17 00:18:59 +08:00
return createInstance(mergeConfig(axios.defaults, config));
};
// 添加取消相关
axios.Cancel = Cancel;
axios.CancelToken = CancelToken;
axios.isCancel = isCancel;
export default axios;