UNPKG

api-simplex-handler

Version:

一个api封装解析器

53 lines (46 loc) 1.92 kB
import {ApiHandler} from "./ApiHandler"; import {IApi} from "./IApi"; import { ExpectFunction, FailFunction, ResolveParams, ResponseHandlerDefineFunction, SuccessFunction } from "./TypeDefine"; import {AxiosInstance, AxiosRequestConfig} from "axios"; import {ISendResponse} from "./ISendResponse"; class ApiHandlerAxios<T extends IApi> extends ApiHandler<T> { axiosInstance: AxiosInstance constructor(api: T, responseHandlerDefineFunction: ResponseHandlerDefineFunction, axiosInstance: AxiosInstance) { super(api, responseHandlerDefineFunction); this.axiosInstance = axiosInstance; } send(args: ResolveParams<T["params"]>): Promise<ISendResponse<any>> { if (!this.api.path) return Promise.reject(`request path is undefined`) let path = this.api.path const config: AxiosRequestConfig<any> = { method: this.api.method, } if (Array.isArray(this.api.params)) { const params = ApiHandler.assemblyParameters(this.api.params, args, this.api); if (typeof params === 'string') path += params else config.data = params; } else if (typeof this.api.params !== 'undefined') { const params = ApiHandler.assemblyParametersToUnion(this.api.params, args, this.api); path += params.path + params.query config.data = params.body; } return this.axiosInstance(path, config) .then(res => { const response: ISendResponse<T> = { code: res.data?.code ?? res.data?.status ?? res.status, message: res.data?.message ?? res.data?.msg ?? res.statusText, data: res.data?.data } return response }); } } export {ApiHandlerAxios}