perf: request请求根据ContentType自动转换数据
This commit is contained in:
parent
da00f8b756
commit
ef9aa62572
|
@ -1,15 +1,21 @@
|
||||||
import service from './service'
|
import service from './service'
|
||||||
import { CONTENT_TYPE } from '@/constants'
|
import { CONTENT_TYPE, TRANSFORM_REQUEST_DATA } from '@/constants'
|
||||||
import { useUserStoreWithOut } from '@/store/modules/user'
|
import { useUserStoreWithOut } from '@/store/modules/user'
|
||||||
|
import { objToFormData } from '@/utils'
|
||||||
|
|
||||||
const request = (option: AxiosConfig) => {
|
const request = (option: AxiosConfig) => {
|
||||||
const { url, method, params, data, headers, responseType } = option
|
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()
|
const userStore = useUserStoreWithOut()
|
||||||
return service.request({
|
return service.request({
|
||||||
url: url,
|
url: url,
|
||||||
method,
|
method,
|
||||||
params,
|
params,
|
||||||
data,
|
data: transformData ? objToFormData(data) : data,
|
||||||
responseType: responseType,
|
responseType: responseType,
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': CONTENT_TYPE,
|
'Content-Type': CONTENT_TYPE,
|
||||||
|
|
|
@ -6,7 +6,11 @@ export const SUCCESS_CODE = 0
|
||||||
/**
|
/**
|
||||||
* 请求contentType
|
* 请求contentType
|
||||||
*/
|
*/
|
||||||
export const CONTENT_TYPE = 'application/json'
|
export const CONTENT_TYPE:
|
||||||
|
| 'application/json'
|
||||||
|
| 'multipart/form-data'
|
||||||
|
| 'application/x-www-form-urlencoded'
|
||||||
|
| 'text/plain' = 'multipart/form-data'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求超时时间
|
* 请求超时时间
|
||||||
|
@ -27,3 +31,8 @@ export const NO_RESET_WHITE_LIST = ['Redirect', 'Login', 'NoFind', 'Root']
|
||||||
* 表格默认过滤列设置字段
|
* 表格默认过滤列设置字段
|
||||||
*/
|
*/
|
||||||
export const DEFAULT_FILTER_COLUMN = ['expand', 'selection']
|
export const DEFAULT_FILTER_COLUMN = ['expand', 'selection']
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否根据headers->content-type自动转换数据格式
|
||||||
|
*/
|
||||||
|
export const TRANSFORM_REQUEST_DATA = true
|
||||||
|
|
|
@ -124,3 +124,14 @@ export function toAnyString() {
|
||||||
export function firstUpperCase(str: string) {
|
export function firstUpperCase(str: string) {
|
||||||
return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase())
|
return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 把对象转为formData
|
||||||
|
*/
|
||||||
|
export function objToFormData(obj: Recordable) {
|
||||||
|
const formData = new FormData()
|
||||||
|
Object.keys(obj).forEach((key) => {
|
||||||
|
formData.append(key, obj[key])
|
||||||
|
})
|
||||||
|
return formData
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue