Skip to content

Commit

Permalink
feat: 添加扩展实例
Browse files Browse the repository at this point in the history
BREAKING CHANGE :
原派生领域替换为功能更强的扩展实例
  • Loading branch information
zjxxxxxxxxx committed Apr 25, 2023
1 parent 6263759 commit 9093e1b
Show file tree
Hide file tree
Showing 12 changed files with 352 additions and 647 deletions.
22 changes: 11 additions & 11 deletions src/adpater/createAdapter.ts
Expand Up @@ -140,11 +140,11 @@ export interface AxiosAdapterBaseOptions extends AxiosAdapterRequestConfig {
/**
* 成功的回调
*/
success(response: AxiosAdapterResponse): void;
success(response: AnyObject): void;
/**
* 失败的回调
*/
fail(error: AxiosAdapterResponseError): void;
fail(error: AnyObject): void;
}

/**
Expand Down Expand Up @@ -271,11 +271,11 @@ export function createAdapter(platform: AxiosAdapterPlatform) {
return {
...config,
header: config.headers,
success(response) {
success(response: AxiosAdapterResponse) {
transformResponse(response);
config.success(response);
},
fail(responseError) {
fail(responseError: AxiosAdapterResponseError) {
responseError.data = {
errMsg: responseError.errMsg,
errno: responseError.errno,
Expand All @@ -284,14 +284,14 @@ export function createAdapter(platform: AxiosAdapterPlatform) {
config.fail(responseError);
},
};
}

function transformResponse(
response: AxiosAdapterResponse | AxiosAdapterResponseError,
) {
response.status = response.status ?? response.statusCode;
response.headers = response.headers ?? response.header;
clean(response, ['statusCode', 'errMsg', 'errno', 'header']);
}
function transformResponse(
response: AxiosAdapterResponse | AxiosAdapterResponseError,
) {
response.status = response.status ?? response.statusCode;
response.headers = response.headers ?? response.header;
clean(response, ['statusCode', 'errMsg', 'errno', 'header']);
}

function processRequest(
Expand Down
56 changes: 9 additions & 47 deletions src/axios.ts
Expand Up @@ -4,37 +4,13 @@ import {
isCancel,
} from './request/cancel';
import { isAxiosError } from './request/createError';
import Axios, { AxiosConstructor, AxiosRequestConfig } from './core/Axios';
import { AxiosInstance, createInstance } from './core/createInstance';
import { mergeConfig } from './core/mergeConfig';
import { AxiosDomainRequest } from './core/AxiosDomain';
import Axios, {
AxiosConstructor,
AxiosRequestConfig,
AxiosRequestHeaders,
} from './core/Axios';
import { createAdapter } from './adpater/createAdapter';
import defaults from './defaults';
import { version } from './version';

/**
* axios 实例默认配置
*/
export interface AxiosInstanceDefaults extends AxiosRequestConfig {
/**
* 请求头
*/
headers: Required<AxiosRequestHeaders>;
}

/**
* axios 实例
*/
export interface AxiosInstance extends AxiosDomainRequest, Axios {
/**
* 默认请求配置
*/
defaults: AxiosInstanceDefaults;
}

/**
* axios 静态对象
*/
Expand All @@ -51,12 +27,6 @@ export interface AxiosStatic extends AxiosInstance {
* 取消令牌
*/
CancelToken: CancelTokenConstructor;
/**
* 创建 axios 实例
*
* @param config 默认配置
*/
create(config?: AxiosRequestConfig): AxiosInstance;
/**
* 创建适配器
*/
Expand All @@ -69,26 +39,18 @@ export interface AxiosStatic extends AxiosInstance {
* 传入响应错误返回 true
*/
isAxiosError: typeof isAxiosError;
}

function createInstance(config: AxiosRequestConfig) {
const context = new Axios(config);
const instance = context.request as AxiosInstance;

Object.assign(instance, context);
Object.setPrototypeOf(instance, Axios.prototype);

return instance;
/**
* 创建 axios 实例
*
* @param config 默认配置
*/
create(config?: AxiosRequestConfig): AxiosInstance;
}

const axios = createInstance(defaults) as AxiosStatic;

axios.create = function create(config) {
const instance = createInstance(mergeConfig(axios.defaults, config));
instance.flush = axios.middleware.wrap(instance.flush);
return instance;
return createInstance(mergeConfig(axios.defaults, config));
};

axios.version = version;
axios.Axios = Axios;
axios.CancelToken = CancelToken;
Expand Down

0 comments on commit 9093e1b

Please sign in to comment.