axios-miniprogram/src/axios.ts

64 lines
1.4 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
* @LastEditTime: 2020-04-15 22:45:22
*/
import {
AxiosRequest,
AxiosRequestDefault,
AxiosMethodConfig,
ResponseData,
AxiosResponse,
AxiosInstance,
} from './types';
import Axios from './core/Axios';
import defaults from './helper/defaults';
/**
* Axios
*
* axios
*/
function createInstance(config: AxiosRequestDefault): AxiosInstance {
const instance = new Axios(config);
/**
* axios
*
* @
*
* @param url :
* @param config :
*
* @
*
* @param url :
* @param config :
*/
function axios<T extends ResponseData>(
url: AxiosRequest | string,
config: AxiosMethodConfig = {}
): Promise<AxiosResponse<T>> {
let requestConfig: AxiosRequest;
// 调用方式一处理请求配置
if (typeof url !== 'string') {
requestConfig = url;
}
// 调用方式二处理请求配置
else {
requestConfig = { ...config, url };
}
return instance.request(requestConfig);
}
// Axios 实例的所有属性和方法合并至 axios 函数
Object.assign(axios, instance);
return axios as AxiosInstance;
}
export default createInstance(defaults);