diff --git a/src/axios/config.ts b/src/axios/config.ts index efdae3d..93d3f19 100644 --- a/src/axios/config.ts +++ b/src/axios/config.ts @@ -1,8 +1,9 @@ import { AxiosResponse, InternalAxiosRequestConfig } from './types' import { ElMessage } from 'element-plus' import qs from 'qs' -import { SUCCESS_CODE } from '@/constants' +import { SUCCESS_CODE, TRANSFORM_REQUEST_DATA } from '@/constants' import { useUserStoreWithOut } from '@/store/modules/user' +import { objToFormData } from '@/utils' const defaultRequestInterceptors = (config: InternalAxiosRequestConfig) => { if ( @@ -10,6 +11,12 @@ const defaultRequestInterceptors = (config: InternalAxiosRequestConfig) => { config.headers['Content-Type'] === 'application/x-www-form-urlencoded' ) { config.data = qs.stringify(config.data) + } else if ( + TRANSFORM_REQUEST_DATA && + config.method === 'post' && + config.headers['Content-Type'] === 'multipart/form-data' + ) { + config.data = objToFormData(config.data) } if (config.method === 'get' && config.params) { let url = config.url as string diff --git a/src/axios/index.ts b/src/axios/index.ts index acdfc4c..60b46c0 100644 --- a/src/axios/index.ts +++ b/src/axios/index.ts @@ -1,21 +1,16 @@ import service from './service' -import { CONTENT_TYPE, TRANSFORM_REQUEST_DATA } from '@/constants' +import { CONTENT_TYPE } from '@/constants' import { useUserStoreWithOut } from '@/store/modules/user' -import { objToFormData } from '@/utils' const request = (option: AxiosConfig) => { const { url, method, params, data, headers, responseType } = option - // 是否需要转换数据格式 - const transformData = - TRANSFORM_REQUEST_DATA && - (headers?.['Content-Type'] || CONTENT_TYPE) === 'multipart/form-data' && - data + const userStore = useUserStoreWithOut() return service.request({ url: url, method, params, - data: transformData ? objToFormData(data) : data, + data: data, responseType: responseType, headers: { 'Content-Type': CONTENT_TYPE, diff --git a/src/constants/index.ts b/src/constants/index.ts index 83ee4c6..448ee0e 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -6,11 +6,7 @@ export const SUCCESS_CODE = 0 /** * 请求contentType */ -export const CONTENT_TYPE: - | 'application/json' - | 'multipart/form-data' - | 'application/x-www-form-urlencoded' - | 'text/plain' = 'multipart/form-data' +export const CONTENT_TYPE: AxiosContentType = 'application/json' /** * 请求超时时间 diff --git a/types/global.d.ts b/types/global.d.ts index bef1d71..73f0a82 100644 --- a/types/global.d.ts +++ b/types/global.d.ts @@ -30,6 +30,7 @@ declare global { | 'application/json' | 'application/x-www-form-urlencoded' | 'multipart/form-data' + | 'text/plain' declare type AxiosMethod = 'get' | 'post' | 'delete' | 'put'