From 679231dbc812587983fdbaff1962a569b3fec844 Mon Sep 17 00:00:00 2001 From: Jin Mao Date: Mon, 25 Aug 2025 06:44:11 +0800 Subject: [PATCH] =?UTF-8?q?refactor(playground):=20=E9=87=8D=E6=9E=84=20AP?= =?UTF-8?q?I=20=E8=AF=B7=E6=B1=82=E5=92=8C=E5=93=8D=E5=BA=94=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 ResponseData 接口,用于统一响应数据格式 - 修改 login 方法,增加状态码和错误信息处理- 添加 logout 方法,暂未实现具体逻辑 - 优化 refreshTokenOnSuccess 处理逻辑 -重构 response success interceptor,增加状态码和错误信息处理 --- playground/src/api/request.ts | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/playground/src/api/request.ts b/playground/src/api/request.ts index b920a2c30..8a1f4ba54 100644 --- a/playground/src/api/request.ts +++ b/playground/src/api/request.ts @@ -134,12 +134,24 @@ export interface PageFetchParams { } let count = 0; - +interface ResponseData { + [key: string]: unknown; + code?: number; + data?: T; + message?: string; +} const { onAuthRequired, onResponseRefreshToken } = createServerTokenAuthentication({ - async login(response, method) { - // localStorage.setItem('token', response.token); - // localStorage.setItem('refresh_token', response.refresh_token); + async login(response) { + // const accessStore = useAccessStore(); + if (response.status >= 400) { + throw new Error(response.statusText); + } + const json = await response.clone().json(); + if (json.code !== 0) { + throw new Error(json.message); + } + // accessStore.setAccessToken(json.access_token); }, assignToken: (method) => { const accessStore = useAccessStore(); @@ -149,7 +161,9 @@ const { onAuthRequired, onResponseRefreshToken } = ? `Bearer ${accessToken}` : null; }, - logout(response, method) {}, + logout(response, method) { + console.log(response, method); + }, refreshTokenOnSuccess: { // 在请求前触发,将接收到method参数,并返回boolean表示token是否过期 isExpired: (response) => { @@ -175,12 +189,17 @@ const { onAuthRequired, onResponseRefreshToken } = }, }, }); -export const client = new AlovaClient( +export const client = new AlovaClient( { baseURL: apiURL }, { onAuthRequired, onResponseRefreshToken }, ); -client.addResponseSuccessInterceptor(async (json) => { +client.addResponseSuccessInterceptor(async (response, method) => { + if (response.status >= 400) { + throw new Error(response.statusText); + } + const json = await response.clone().json(); + if (json.code !== 0) { throw new Error(json.message); }