Browse Source

refactor(playground): 重构 API 请求和响应处理

- 添加 ResponseData 接口,用于统一响应数据格式
- 修改 login 方法,增加状态码和错误信息处理- 添加 logout 方法,暂未实现具体逻辑
- 优化 refreshTokenOnSuccess 处理逻辑
-重构 response success interceptor,增加状态码和错误信息处理
alova
Jin Mao 12 months ago
parent
commit
679231dbc8
  1. 33
      playground/src/api/request.ts

33
playground/src/api/request.ts

@ -134,12 +134,24 @@ export interface PageFetchParams {
}
let count = 0;
interface ResponseData<T = unknown> {
[key: string]: unknown;
code?: number;
data?: T;
message?: string;
}
const { onAuthRequired, onResponseRefreshToken } =
createServerTokenAuthentication<typeof VueHook>({
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<ResponseData>(
{ 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);
}

Loading…
Cancel
Save