提交 1c92a9e4 作者: 方治民

fix: 修复 AxiosRequestConfig 类型使用问题

上级 b91927e3
import type { AxiosInstance, AxiosPromise, AxiosResponse, InternalAxiosRequestConfig } from 'axios'
import type { AxiosInstance, AxiosPromise, AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios'
import axios, { AxiosError } from 'axios'
import type { RequestOptions, Result, UploadFileParams } from '/#/axios'
import type { CreateAxiosOptions } from './axiosTransform'
......@@ -13,7 +13,7 @@ import { ContentTypeEnum, RequestEnum } from '/@/enums/httpEnum'
* @param config 请求配置
* @returns 请求结果
*/
axios.defaults.adapter = function (config: CreateAxiosOptions): AxiosPromise<any> {
axios.defaults.adapter = function (config: InternalAxiosRequestConfig): AxiosPromise<any> {
return new Promise((resolve, reject) => {
const request = uni.request({
method: config.method.toUpperCase() as RequestEnum,
......@@ -125,6 +125,7 @@ export class VAxios {
!ignoreCancel && axiosCanceler.addPending(config)
if (requestInterceptors && isFunction(requestInterceptors)) {
// @ts-expect-error
config = requestInterceptors(config, this.options)
}
return config
......@@ -156,7 +157,7 @@ export class VAxios {
/**
* @description: File Upload
*/
uploadFile<T = any>(config: InternalAxiosRequestConfig, params: UploadFileParams) {
uploadFile<T = any>(config: AxiosRequestConfig, params: UploadFileParams) {
const formData = new window.FormData()
const customFilename = params.name || 'file'
......@@ -221,7 +222,7 @@ export class VAxios {
}
// support form-data
supportFormData(config: InternalAxiosRequestConfig) {
supportFormData(config: AxiosRequestConfig) {
const headers = config.headers || this.options.headers
const contentType = headers?.['Content-Type'] || headers?.['Content-Type']
......@@ -239,24 +240,24 @@ export class VAxios {
}
}
get<T = any>(config: InternalAxiosRequestConfig, options?: RequestOptions): Promise<T> {
get<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
return this.request({ ...config, method: 'GET' }, options)
}
post<T = any>(config: InternalAxiosRequestConfig, options?: RequestOptions): Promise<T> {
post<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
return this.request({ ...config, method: 'POST' }, options)
}
put<T = any>(config: InternalAxiosRequestConfig, options?: RequestOptions): Promise<T> {
put<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
return this.request({ ...config, method: 'PUT' }, options)
}
delete<T = any>(config: InternalAxiosRequestConfig, options?: RequestOptions): Promise<T> {
delete<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
return this.request({ ...config, method: 'DELETE' }, options)
}
request<T = any>(config: InternalAxiosRequestConfig, options?: RequestOptions): Promise<T> {
let conf: CreateAxiosOptions = cloneDeep(config)
request<T = any>(config: AxiosRequestConfig, options?: RequestOptions): Promise<T> {
let conf = cloneDeep(config) as CreateAxiosOptions
const transform = this.getTransform()
const { requestOptions } = this.options
......
import type { Canceler, InternalAxiosRequestConfig } from 'axios'
import type { AxiosRequestConfig, Canceler } from 'axios'
import axios from 'axios'
import { isFunction } from '/@/utils/is'
// Used to store the identification and cancellation function of each request
let pendingMap = new Map<string, Canceler>()
export function getPendingUrl(config: InternalAxiosRequestConfig) {
export function getPendingUrl(config: AxiosRequestConfig) {
return [config.method, config.url].join('&')
}
......@@ -14,7 +14,7 @@ export class AxiosCanceler {
* Add request
* @param {Object} config
*/
addPending(config: InternalAxiosRequestConfig) {
addPending(config: AxiosRequestConfig) {
this.removePending(config)
const url = getPendingUrl(config)
config.cancelToken =
......@@ -41,7 +41,7 @@ export class AxiosCanceler {
* Removal request
* @param {Object} config
*/
removePending(config: InternalAxiosRequestConfig) {
removePending(config: AxiosRequestConfig) {
const url = getPendingUrl(config)
if (pendingMap.has(url)) {
......
/**
* Data processing class, can be configured according to the project
*/
import type { AxiosResponse, InternalAxiosRequestConfig } from 'axios'
import type { AxiosRequestConfig, AxiosResponse } from 'axios'
import type { RequestOptions, Result } from '/#/axios'
export interface CreateAxiosOptions extends InternalAxiosRequestConfig {
export interface CreateAxiosOptions extends AxiosRequestConfig {
authenticationScheme?: string
transform?: AxiosTransform
requestOptions?: RequestOptions
......@@ -16,15 +16,15 @@ export abstract class AxiosTransform {
* 允许动态修改本次请求的 config 和 options
*/
inject?: (
config: InternalAxiosRequestConfig,
config: AxiosRequestConfig,
options: RequestOptions,
) => { config: InternalAxiosRequestConfig; options: RequestOptions }
) => { config: AxiosRequestConfig; options: RequestOptions }
/**
* @description: Process configuration before request
* @description: Process configuration before request
*/
beforeRequestHook?: (config: InternalAxiosRequestConfig, options: RequestOptions) => InternalAxiosRequestConfig
beforeRequestHook?: (config: AxiosRequestConfig, options: RequestOptions) => AxiosRequestConfig
/**
* @description: Request successfully processed
......@@ -39,10 +39,7 @@ export abstract class AxiosTransform {
/**
* @description: 请求之前的拦截器
*/
requestInterceptors?: (
config: InternalAxiosRequestConfig,
options: CreateAxiosOptions,
) => InternalAxiosRequestConfig
requestInterceptors?: (config: AxiosRequestConfig, options: CreateAxiosOptions) => AxiosRequestConfig
/**
* @description: 请求之后的拦截器
......
......@@ -268,7 +268,7 @@ export const defHttp = createAxios({
// other api url
// export const otherHttp = createAxios({
// transform: {
// inject: (config: InternalAxiosRequestConfig<any>, options: http.RequestOptions) => {
// inject: (config: AxiosRequestConfig<any>, options: http.RequestOptions) => {
// // TODO: 根据实际项目配置
// return { config, options }
// },
......
import type { InternalAxiosRequestConfig } from 'axios'
import type { AxiosRequestConfig } from 'axios'
declare global {
type Recordable<T = any> = Record<string, T>
......@@ -49,7 +49,7 @@ declare global {
retryRequest?: RetryRequest
}
type RequestConfig<T = any> = InternalAxiosRequestConfig<T>
type RequestConfig<T = any> = AxiosRequestConfig<T>
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论