From b14fb1061571bc84d2ac55d300a4114ac512ad5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=B6=E6=80=9D=E6=B7=87?= Date: Thu, 16 Mar 2023 16:29:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84request=E8=AF=B7?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/index.ts | 9 ++--- src/api/user.ts | 20 ++-------- src/components/View/view.module.scss | 4 +- src/utils/request.ts | 55 +++++++++++++++++----------- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/api/index.ts b/src/api/index.ts index 34beef3..6d11923 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -1,9 +1,8 @@ -import request from '@/utils/request' +import { request } from '@/utils/request' export function fetchOrderList(data: any) { - return request({ - url: '/user/login', - method: 'post', + return request.post( + '/user/login', data, - }) + ) } diff --git a/src/api/user.ts b/src/api/user.ts index 524c556..96c78b8 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -1,28 +1,16 @@ -import request from '@/utils/request' +import { request } from '@/utils/request' // import { LoginInfo } from '@/typings/login' export function fetchLogin(data: any) { - return request({ - url: '/user/login', - method: 'post', - data, - }) + return request.post('/user/login', data) } // 获取当前登录用户信息 export async function fetchUserInfo(params: any) { - return request({ - url: '/user/info', - method: 'get', - params, - }) + return request.get('/user/info', { params }) } // 用户列表 export function fetchUserList(params: any) { - return request({ - url: '/user/list', - method: 'get', - params, - }) + return request.get('/user/list', { params }) } diff --git a/src/components/View/view.module.scss b/src/components/View/view.module.scss index c7b0687..0c236ea 100644 --- a/src/components/View/view.module.scss +++ b/src/components/View/view.module.scss @@ -1,7 +1,7 @@ .contentInner { background: #fff; padding: 24px; - min-height: 'calc(100vh - 230px)'; + min-height: calc(100vh - 230px); position: relative; } .appViewTitle{ @@ -12,4 +12,4 @@ font-size: 24px; font-weight: normal; } -} \ No newline at end of file +} diff --git a/src/utils/request.ts b/src/utils/request.ts index aa8df84..e48f95b 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -1,6 +1,7 @@ -import axios, { AxiosRequestConfig } from 'axios' -import { message, notification } from 'antd' +import axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios' +import { message as aMessage } from 'antd' import { getToken } from './auth' +import { CodeMessage } from '@/config' export interface Response { code: number; @@ -23,36 +24,48 @@ axiosInstance.interceptors.request.use( }, (error) => { console.error('error', error) - message.error('网络异常') + aMessage.error('网络异常') return Promise.reject(error) }, ) axiosInstance.interceptors.response.use( - (response) => { - const { data } = response - if (data) { - if (data.code !== 0) { - notification.error({ - message: data.message, - }) - return Promise.reject(new Error(data.message || 'Error')) - } + (response:AxiosResponse>) => { + const { code, message, data } = response.data + if (code !== 0) { + aMessage.error(message) + return Promise.reject(new Error(message)) } return Promise.resolve(data) }, (error) => { - console.error('error', error) + httpErrorStatusHandler(error) return Promise.reject(error) }, ) -export default function request(config: AxiosRequestConfig): Promise> { - return new Promise((resolve, reject) => { - axiosInstance.request(config).then((res) => { - resolve(res.data) - }).catch((error) => { - reject(error) - }) - }) +export const request = { + get(url: string, config?: AxiosRequestConfig): Promise { + return axiosInstance.get(url, config) + }, + post(url: string, data?: object, config?: AxiosRequestConfig): Promise { + return axiosInstance.post(url, data, config) + }, + put(url: string, data?: object, config?: AxiosRequestConfig): Promise { + return axiosInstance.put(url, data, config) + }, + delete(url: string, config?: AxiosRequestConfig): Promise { + return axiosInstance.delete(url, config) + }, +} + +export function httpErrorStatusHandler(error: AxiosError) { + let message = '' + if (error?.response?.status) { + message = CodeMessage[error.response.status] + } + if (error.message.includes('timeout')) message = '网络请求超时!' + if (error.message.includes('Network')) message = window.navigator.onLine ? '服务端异常!' : '您断网了!' + error.message = message + aMessage.error(message) } -- Gitee