/** * 只处理 post 请求参数 */ export default function processPostData< IRequestParams = unknown, IRunParams = unknown, IFormatParams = unknown, >(options: { contentType?: string; method: string; runParams?: IRunParams; data?: IRequestParams; formatParam?: (params?: IRequestParams) => IFormatParams; }) { const { contentType, method, runParams, data, formatParam } = options; if (method !== 'POST') return data; if (contentType === 'application/x-www-form-urlencoded') { let _runParams: string = runParams as string; if (typeof runParams === 'object' && runParams !== null) { const searchParams = new URLSearchParams(); for (const key of Object.keys(runParams)) { if (runParams[key] !== null) { searchParams.append(key, runParams[key]); } } _runParams = searchParams.toString(); } let _data: string = data as string; if (typeof data === 'object' && data !== null) { const searchParams = new URLSearchParams(); for (const key of Object.keys(data as object)) { searchParams.append(key, data[key]); } _data = searchParams.toString(); } const result = [_runParams, _data].filter(Boolean).join('&'); if (typeof formatParam === 'function') { return formatParam(result as IRequestParams); } return result; } if (typeof formatParam === 'function') { return formatParam({ ...runParams, ...data } satisfies IRequestParams); } return { ...runParams, ...data }; }