From 185f1e6e210ecaac28ebfdee4198b7ca2eaa0933 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=87=AF=E9=BE=99?= <502431556@qq.com> Date: Tue, 19 Apr 2022 10:51:47 +0800 Subject: [PATCH] refactor: refactor useAxios --- src/api/dashboard/analysis/index.ts | 10 +++--- src/api/dashboard/workplace/index.ts | 12 +++---- src/api/login/index.ts | 28 ++++++++-------- src/api/table/index.ts | 34 ++++++------------- src/hooks/web/useAxios.ts | 49 +++++++++++++++++++--------- types/global.d.ts | 6 ++-- 6 files changed, 72 insertions(+), 67 deletions(-) diff --git a/src/api/dashboard/analysis/index.ts b/src/api/dashboard/analysis/index.ts index e542766..a4c85cd 100644 --- a/src/api/dashboard/analysis/index.ts +++ b/src/api/dashboard/analysis/index.ts @@ -6,20 +6,20 @@ import type { MonthlySales } from './types' -const { request } = useAxios() +const request = useAxios() export const getCountApi = () => { - return request({ url: '/analysis/total', method: 'get' }) + return request.get({ url: '/analysis/total' }) } export const getUserAccessSourceApi = () => { - return request({ url: '/analysis/userAccessSource', method: 'get' }) + return request.get({ url: '/analysis/userAccessSource' }) } export const getWeeklyUserActivityApi = () => { - return request({ url: '/analysis/weeklyUserActivity', method: 'get' }) + return request.get({ url: '/analysis/weeklyUserActivity' }) } export const getMonthlySalesApi = () => { - return request({ url: '/analysis/monthlySales', method: 'get' }) + return request.get({ url: '/analysis/monthlySales' }) } diff --git a/src/api/dashboard/workplace/index.ts b/src/api/dashboard/workplace/index.ts index 0a48f3f..1f8edbb 100644 --- a/src/api/dashboard/workplace/index.ts +++ b/src/api/dashboard/workplace/index.ts @@ -1,24 +1,24 @@ import { useAxios } from '@/hooks/web/useAxios' import type { WorkplaceTotal, Project, Dynamic, Team, RadarData } from './types' -const { request } = useAxios() +const request = useAxios() export const getCountApi = () => { - return request({ url: '/workplace/total', method: 'get' }) + return request.get({ url: '/workplace/total' }) } export const getProjectApi = () => { - return request({ url: '/workplace/project', method: 'get' }) + return request.get({ url: '/workplace/project' }) } export const getDynamicApi = () => { - return request({ url: '/workplace/dynamic', method: 'get' }) + return request.get({ url: '/workplace/dynamic' }) } export const getTeamApi = () => { - return request({ url: '/workplace/team', method: 'get' }) + return request.get({ url: '/workplace/team' }) } export const getRadarApi = () => { - return request({ url: '/workplace/radar', method: 'get' }) + return request.get({ url: '/workplace/radar' }) } diff --git a/src/api/login/index.ts b/src/api/login/index.ts index 463c88c..a272135 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -1,34 +1,34 @@ import { useAxios } from '@/hooks/web/useAxios' import type { UserLoginType, UserType } from './types' -const { request } = useAxios() +const request = useAxios() export const loginApi = (data: UserLoginType) => { - return request({ url: '/user/login', method: 'post', data } as AxiosConfig< - Recordable, - UserLoginType - >) + return request.post({ + url: '/user/login', + data + }) } export const loginOutApi = () => { - return request({ url: '/user/loginOut', method: 'get' }) + return request.get({ url: '/user/loginOut' }) } export const getUserListApi = ({ params }: AxiosConfig) => { - return request<{ + return request.get<{ total: number list: UserType[] - }>({ url: '/user/list', method: 'get', params }) + }>({ url: '/user/list', params }) } -export const getAdminRoleApi = ({ params }: AxiosConfig) => { - return request<{ +export const getAdminRoleApi = ({ params }) => { + return request.get<{ list: AppCustomRouteRecordRaw[] - }>({ url: '/role/list', method: 'get', params }) + }>({ url: '/role/list', params }) } -export const getTestRoleApi = ({ params }: AxiosConfig) => { - return request<{ +export const getTestRoleApi = ({ params }) => { + return request.get<{ list: string[] - }>({ url: '/role/list', method: 'get', params }) + }>({ url: '/role/list', params }) } diff --git a/src/api/table/index.ts b/src/api/table/index.ts index 294659f..81a14da 100644 --- a/src/api/table/index.ts +++ b/src/api/table/index.ts @@ -1,37 +1,23 @@ import { useAxios } from '@/hooks/web/useAxios' import type { TableData } from './types' -const { request } = useAxios() +const request = useAxios() -export const getTableListApi = ({ params }: AxiosConfig) => { - return request<{ +export const getTableListApi = ({ params }) => { + return request.get<{ total: number list: TableData[] - }>({ url: '/example/list', method: 'get', params }) + }>({ url: '/example/list', params }) } -export const saveTableApi = ({ data }: AxiosConfig) => { - return request({ url: '/example/save', method: 'post', data }) +export const saveTableApi = ({ data }) => { + return request.post({ url: '/example/save', data }) } -export const getTableDetApi = ({ - params -}: AxiosConfig< - { - id: string - }, - Recordable ->) => { - return request({ url: '/example/detail', method: 'get', params }) +export const getTableDetApi = ({ params }) => { + return request.get({ url: '/example/detail', params }) } -export const delTableListApi = ({ - data -}: AxiosConfig< - Recordable, - { - id: string[] | number[] - } ->) => { - return request({ url: '/example/delete', method: 'post', data }) +export const delTableListApi = ({ data }) => { + return request.post({ url: '/example/delete', data }) } diff --git a/src/hooks/web/useAxios.ts b/src/hooks/web/useAxios.ts index a415bcf..7743870 100644 --- a/src/hooks/web/useAxios.ts +++ b/src/hooks/web/useAxios.ts @@ -6,22 +6,41 @@ import { config } from '@/config/axios/config' const { default_headers } = config -export const useAxios = () => { - const request = (option: AxiosConfig): AxiosPromise => { - const { url, method, params, data, headersType, responseType } = option - return service({ - url: url, - method, - params, - data, - responseType: responseType, - headers: { - 'Content-Type': headersType || default_headers - } - }) - } +const request = (option: AxiosConfig): AxiosPromise => { + const { url, method, params, data, headersType, responseType } = option + return service({ + url: url, + method, + params, + data, + responseType: responseType, + headers: { + 'Content-Type': headersType || default_headers + } + }) +} +function getFn(option: AxiosConfig): AxiosPromise { + return request({ method: 'get', ...option }) +} + +function postFn(option: AxiosConfig): AxiosPromise { + return request({ method: 'post', ...option }) +} + +function deleteFn(option: AxiosConfig): AxiosPromise { + return request({ method: 'delete', ...option }) +} + +function putFn(option: AxiosConfig): AxiosPromise { + return request({ method: 'put', ...option }) +} + +export const useAxios = () => { return { - request + get: getFn, + post: postFn, + delete: deleteFn, + put: putFn } } diff --git a/types/global.d.ts b/types/global.d.ts index 28bb924..008c5e5 100644 --- a/types/global.d.ts +++ b/types/global.d.ts @@ -25,9 +25,9 @@ declare type AxiosMethod = 'get' | 'post' | 'delete' | 'put' declare type AxiosResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' -declare type AxiosConfig = { - params?: T - data?: K +declare type AxiosConfig = { + params?: any + data?: any url?: string method?: AxiosMethod headersType?: string