From b32a298b6290511028df979a8fb272307e6f00f9 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Thu, 2 Feb 2023 20:26:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=20axios=20=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- continew-admin-ui/src/api/interceptor.ts | 55 ---------------- continew-admin-ui/src/api/system/dept.ts | 12 ++-- continew-admin-ui/src/hooks/request.ts | 2 +- continew-admin-ui/src/main.ts | 2 +- continew-admin-ui/src/utils/request.ts | 63 +++++++++++++++++++ .../src/views/system/dept/index.vue | 1 + 6 files changed, 73 insertions(+), 62 deletions(-) delete mode 100644 continew-admin-ui/src/api/interceptor.ts create mode 100644 continew-admin-ui/src/utils/request.ts diff --git a/continew-admin-ui/src/api/interceptor.ts b/continew-admin-ui/src/api/interceptor.ts deleted file mode 100644 index c573419b..00000000 --- a/continew-admin-ui/src/api/interceptor.ts +++ /dev/null @@ -1,55 +0,0 @@ -import axios from 'axios'; -import type { AxiosRequestConfig, AxiosResponse } from 'axios'; -import { Message } from '@arco-design/web-vue'; -import { getToken } from '@/utils/auth'; - -export interface HttpResponse { - success: boolean; // 是否成功 - code: number; // 状态码 - msg: string; // 状态信息 - timestamp: string; // 时间戳 - data: T; // 返回数据 -} - -if (import.meta.env.VITE_API_BASE_URL) { - axios.defaults.baseURL = import.meta.env.VITE_API_BASE_URL; -} - -axios.interceptors.request.use( - (config: AxiosRequestConfig) => { - // let each request carry token - // this example using the JWT token - // Authorization is a custom headers key - // please modify it according to the actual situation - const token = getToken(); - if (token) { - if (!config.headers) { - config.headers = {}; - } - config.headers.Authorization = `Bearer ${token}`; - } - return config; - }, - (error) => { - // do something - return Promise.reject(error); - } -); -// add response interceptors -axios.interceptors.response.use( - (response: AxiosResponse) => { - const res = response.data; - if (!res.success) { - Message.error(res.msg); - } - return res; - }, - (error) => { - const res = error.response.data; - Message.error({ - content: res.msg || '网络错误', - duration: 3 * 1000, - }); - return Promise.reject(error); - } -); diff --git a/continew-admin-ui/src/api/system/dept.ts b/continew-admin-ui/src/api/system/dept.ts index 71bd5f3d..0a43a641 100644 --- a/continew-admin-ui/src/api/system/dept.ts +++ b/continew-admin-ui/src/api/system/dept.ts @@ -1,6 +1,8 @@ import axios from 'axios'; import qs from 'query-string'; +const BASE_URL = '/system/dept'; + export interface DeptRecord { deptId?: number; deptName: string; @@ -21,7 +23,7 @@ export interface DeptParams { } export function listDept(params: DeptParams) { - return axios.get('/system/dept/all', { + return axios.get(`${BASE_URL}/all`, { params, paramsSerializer: (obj) => { return qs.stringify(obj); @@ -30,17 +32,17 @@ export function listDept(params: DeptParams) { } export function getDept(id: number) { - return axios.get(`/system/dept/${id}`); + return axios.get(`${BASE_URL}/${id}`); } export function createDept(req: DeptRecord) { - return axios.post('/system/dept', req); + return axios.post(BASE_URL, req); } export function updateDept(req: DeptRecord) { - return axios.put(`/system/dept`, req); + return axios.put(BASE_URL, req); } export function deleteDept(ids: number | Array) { - return axios.delete(`/system/dept/${ids}`); + return axios.delete(`${BASE_URL}/${ids}`); } \ No newline at end of file diff --git a/continew-admin-ui/src/hooks/request.ts b/continew-admin-ui/src/hooks/request.ts index 7b853362..c5c2f8ff 100644 --- a/continew-admin-ui/src/hooks/request.ts +++ b/continew-admin-ui/src/hooks/request.ts @@ -1,6 +1,6 @@ import { ref, UnwrapRef } from 'vue'; import { AxiosResponse } from 'axios'; -import { HttpResponse } from '@/api/interceptor'; +import { HttpResponse } from '@/utils/request'; import useLoading from './loading'; // use to fetch list diff --git a/continew-admin-ui/src/main.ts b/continew-admin-ui/src/main.ts index 4024bdab..6bfcd0c6 100644 --- a/continew-admin-ui/src/main.ts +++ b/continew-admin-ui/src/main.ts @@ -10,7 +10,7 @@ import './mock'; import App from './App.vue'; import '@arco-design/web-vue/dist/arco.css'; import '@/assets/style/global.less'; -import '@/api/interceptor'; +import '@/utils/request'; const app = createApp(App); diff --git a/continew-admin-ui/src/utils/request.ts b/continew-admin-ui/src/utils/request.ts new file mode 100644 index 00000000..75373d20 --- /dev/null +++ b/continew-admin-ui/src/utils/request.ts @@ -0,0 +1,63 @@ +import axios from "axios"; +import type { AxiosRequestConfig, AxiosResponse } from "axios"; +import { Message } from "@arco-design/web-vue"; +import { getToken } from "@/utils/auth"; + +// default config +if (import.meta.env.VITE_API_BASE_URL) { + axios.defaults.baseURL = import.meta.env.VITE_API_BASE_URL; + axios.defaults.timeout = 60000 // 1 分钟 +} + +// request interceptors +axios.interceptors.request.use((config: AxiosRequestConfig) => { + const token = getToken(); + if (token) { + if (!config.headers) { + config.headers = {}; + } + config.headers.Authorization = `Bearer ${token}`; + } + return config; + }, + (error) => { + console.log(error); + return Promise.reject(error); + } +); + +export interface HttpResponse { + success: boolean; // 是否成功 + code: number; // 状态码 + msg: string; // 状态信息 + timestamp: string; // 时间戳 + data: T; // 返回数据 +} + +// response interceptors +axios.interceptors.response.use((response: AxiosResponse) => { + const res = response.data; + if (res.success) { + return res; + } + + Message.error({ + content: res.msg, + duration: 3000 + }); + // + // if (res.code === 401) { + // // 重定向路由到登录页面 + // } + return Promise.reject(new Error(res.msg)); + }, + (error) => { + console.error(`err: ${error}`); + const res = error.response.data; + Message.error({ + content: res.msg || "网络错误", + duration: 3000 + }); + return Promise.reject(error); + } +); \ No newline at end of file diff --git a/continew-admin-ui/src/views/system/dept/index.vue b/continew-admin-ui/src/views/system/dept/index.vue index f6af2b55..1a088340 100644 --- a/continew-admin-ui/src/views/system/dept/index.vue +++ b/continew-admin-ui/src/views/system/dept/index.vue @@ -132,6 +132,7 @@ allow-search :filter-tree-node="filterDeptTree" :fallback-option="false" + size="large" />