From 023380d14b5305d16fffe8c01c8ee758dad3a6a0 Mon Sep 17 00:00:00 2001 From: KiriAky 107 Date: Tue, 31 Mar 2026 22:23:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=EF=BC=9A=E5=AE=8C=E5=96=84?= =?UTF-8?q?=20naive-ui=20=E9=85=8D=E7=BD=AE=EF=BC=8C=E4=BF=AE=E5=A4=8D=20A?= =?UTF-8?q?PI=20=E8=BF=94=E5=9B=9E=E5=80=BC=E8=AE=BF=E9=97=AE=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E4=BF=AE=E5=A4=8D=20Sidebar=20=E7=A1=AC?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E6=95=B0=E6=8D=AE=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E5=AE=88=E5=8D=AB=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=85=B6=E4=BB=96=E7=BB=84=E4=BB=B6=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/api/index.ts | 32 ++++++++-------- frontend/src/components/Sidebar.vue | 51 ++++++++++++++----------- frontend/src/main.ts | 4 +- frontend/src/router/index.ts | 30 ++++++++++++--- frontend/src/store/user.ts | 2 +- frontend/src/types/index.ts | 1 + frontend/src/views/Category.vue | 4 +- frontend/src/views/Home.vue | 2 +- frontend/src/views/admin/PostManage.vue | 2 +- frontend/src/views/auth/Login.vue | 2 +- frontend/src/views/auth/Register.vue | 2 +- 11 files changed, 82 insertions(+), 50 deletions(-) diff --git a/frontend/src/api/index.ts b/frontend/src/api/index.ts index 3355cd2..cf11d24 100644 --- a/frontend/src/api/index.ts +++ b/frontend/src/api/index.ts @@ -1,5 +1,4 @@ -import axios, { type AxiosInstance, type AxiosRequestConfig, type AxiosResponse } from 'axios' -import type { ApiResponse } from '@/types' +import axios, { type AxiosInstance, type AxiosRequestConfig } from 'axios' // 创建 axios 实例 const request: AxiosInstance = axios.create({ @@ -27,20 +26,22 @@ request.interceptors.request.use( // 响应拦截器 request.interceptors.response.use( - (response: AxiosResponse) => { - return response + (response) => { + // 成功时返回 response.data(即 ApiResponse) + return response.data }, (error: any) => { if (error.response) { - const { status } = error.response + const { status, data } = error.response - // 401 未授权,跳转登录页 + // 401 未授权,清除 token if (status === 401) { localStorage.removeItem('access_token') window.location.href = '/login' } - return Promise.reject(error.response.data) + // 返回错误信息 + return Promise.reject(data) } return Promise.reject(error) @@ -48,21 +49,22 @@ request.interceptors.response.use( ) // 封装请求方法 +// 返回 Promise>,调用者通过 .data 访问实际数据 export const http = { - get(url: string, config?: AxiosRequestConfig): Promise> { - return request.get(url, config) + get(url: string, config?: AxiosRequestConfig): Promise<{ code: number; message: string; data: T }> { + return request.get(url, config).then(res => res.data) }, - post(url: string, data?: any, config?: AxiosRequestConfig): Promise> { - return request.post(url, data, config) + post(url: string, data?: any, config?: AxiosRequestConfig): Promise<{ code: number; message: string; data: T }> { + return request.post(url, data, config).then(res => res.data) }, - put(url: string, data?: any, config?: AxiosRequestConfig): Promise> { - return request.put(url, data, config) + put(url: string, data?: any, config?: AxiosRequestConfig): Promise<{ code: number; message: string; data: T }> { + return request.put(url, data, config).then(res => res.data) }, - delete(url: string, config?: AxiosRequestConfig): Promise> { - return request.delete(url, config) + delete(url: string, config?: AxiosRequestConfig): Promise<{ code: number; message: string; data: T }> { + return request.delete(url, config).then(res => res.data) }, } diff --git a/frontend/src/components/Sidebar.vue b/frontend/src/components/Sidebar.vue index 7ebac98..c935964 100644 --- a/frontend/src/components/Sidebar.vue +++ b/frontend/src/components/Sidebar.vue @@ -1,26 +1,34 @@