import { service } from '@/config/axios' import { config } from '@/config/axios/config' const { default_headers } = config const request = (option: AxiosConfig) => { const { url, method, params, data, headersType, responseType } = option return service({ url: url, method, params, data, responseType: responseType, headers: { 'Content-Type': headersType || default_headers } }) } async function getFn(option: AxiosConfig): Promise { const res = await request({ method: 'GET', ...option }) console.info(res) return res.data } async function postFn(option: AxiosConfig): Promise { const res = await request({ method: 'POST', ...option }) console.info(res) return res.data } async function deleteFn(option: AxiosConfig): Promise { const res = await request({ method: 'DELETE', ...option }) console.info(res) return res.data } async function putFn(option: AxiosConfig): Promise { const res = await request({ method: 'PUT', ...option }) console.info(res) return res.data } async function downloadFn(option: AxiosConfig): Promise { const res = await request({ method: 'GET', responseType: 'blob', ...option }) console.info(res) return res as unknown as Promise } async function uploadFn(option: AxiosConfig): Promise { option.headersType = 'multipart/form-data' const res = await request({ method: 'PUT', ...option }) console.info(res) return res as unknown as Promise } export const useAxios = () => { return { get: getFn, post: postFn, delete: deleteFn, put: putFn, download: downloadFn, upload: uploadFn } }