axios-interface

快速开始
yarn add axios-interface
GetStarted
基本用法
axios-interface 分为三个阶段:接口工厂 => 接口定义 => 接口调用,每个阶段传入的配置项都会覆盖前一阶段的同名配置项。
import {createFactory} from 'axios-interface';
const {createInterface} = createFactory(options);
interface Params {
companyId: string;
keyword?: string;
}
interface User {
name: string;
}
const getUsers = createInterface<Params, User[]>('GET', '/rest/companies/{companyId}/users', options);
const result = await getUsers({companyId: '1', keyword: 'jack'});
配置 Options
interface Options extends AxiosRequestConfig {
onPending?: OnPending;
onResolve?: OnResolve;
onReject?: OnReject;
interpolate?: RegExp;
encodePathVariable?: boolean;
enableUrlTemplateHeaders?: boolean;
transformDeleteParamsIntoBody?: boolean;
[whatever: string]: any;
}
type OnPending = <TParams>(params: TParams, options: Options) => Options | Promise<Options>;
type OnResolve = <TParams>(response: AxiosResponse, params: TParams, options: Options) => any;
type OnReject = <TParams>(response: AxiosError, params: TParams, options: Options) => any;
NOTE: 你可以使用 axios 的所有配置项
const {createInterface} = createFactory(options);
const getUsers = createInterface(method, urlTemplate, options);
const result = getUsers(params);
onPending, onResolve, onReject 的生命周期说明
函数 call => onPending => transformRequest(axios) => 浏览器 => transformResponse(axios) => onResolve | onReject => 函数返回
whatever_you_want_to_custom 的使用说明
你可以在任何时候,在 options 里注入你想要的数据,在 onPending, onResolve, onReject
三个钩子,都会把 options 重新给你,此时,你可以根据 options 处理多种情况
参数声明时机
-
以下参数仅在 createFactory 时声明有效
- interpolate,可以修改 urlTemplate 解析
-
以下参数在 createFactory 与 createInterface 时声明有效,request 时声明无效
- encodePathVariable, enableUrlTemplateHeaders
-
以下参数在 createFactory、 createInterface 和 request 时声明有效
- onPending, onResolve, onReject, transformDeleteParamsIntoBody
文档
Best Practice
FAQ