import axios, { AxiosRequestConfig } from 'axios'; import { DEFAULT_HEADER } from '../constants'; import { logger, isFormData, isUndefined, getParamStrFromObj } from '../utils'; /** * 获取使用 axios 发起请求后的 promise 对象 */ export const getAxiosPromise = ({ url, data, method, headers: rawHeaders, withCredentials = true, transformRequest: rawTransformRequest, ...rest }: AxiosRequestConfig) => { const isFD = isFormData(data); const isPost = method.toLowerCase() === 'post'; logger.log(`Req Url: ${url}`); if (data && (Object.keys(data).length || isFD)) { logger.log('Req Data:', data); } const transformRequest = (() => { // 优先使用用户的配置 if (!isUndefined(rawTransformRequest)) return rawTransformRequest; if (isFD) return null; // 如果使用 post 的请求方式,自动对其 stringify if (isPost) return x => JSON.stringify(x); return getParamStrFromObj; })(); const headers = (() => { if (!isUndefined(rawHeaders)) return rawHeaders; if (isPost) return { 'Content-Type': 'application/json;charset=utf-8' }; return DEFAULT_HEADER; })(); return axios({ url, data, method, headers, withCredentials, transformRequest, ...rest, }); };