From 9a8c2124dc69da77fe699b46f29ce90257bb20b6 Mon Sep 17 00:00:00 2001 From: j10c Date: Tue, 15 Oct 2024 23:02:28 +0800 Subject: [PATCH 1/9] feat(service): new request implementation --- src/services/api/apiList.ts | 12 ----- src/services/request.ts | 5 ++- src/utils/fetch.ts | 4 +- src/utils/request/requestImpl.ts | 75 ++++++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+), 15 deletions(-) create mode 100644 src/utils/request/requestImpl.ts diff --git a/src/services/api/apiList.ts b/src/services/api/apiList.ts index aa14dfd1..c9068e42 100644 --- a/src/services/api/apiList.ts +++ b/src/services/api/apiList.ts @@ -65,16 +65,4 @@ const api = { } }; -const defDevHost = "http://0.0.0.0:8080"; -function appendHost(api: any) { - for (const key in api) - if (Object.prototype.hasOwnProperty.call(api, key)) - if (api[key] instanceof Object) appendHost(api[key]); - else - api[key] = process.env.HOST - ? process.env.HOST + api[key] - : defDevHost + api[key]; -} - -appendHost(api); export { api }; diff --git a/src/services/request.ts b/src/services/request.ts index 108b3758..a7f4ee40 100644 --- a/src/services/request.ts +++ b/src/services/request.ts @@ -10,13 +10,16 @@ const globalConfig: Partial = { timeout: 12 * 1000 }; +/** + * @deprecated + */ const request = ( url: string, config: Omit ) => { return Taro.request>({ ...globalConfig, - url, + url: process.env.HOST + url, ...config }); diff --git a/src/utils/fetch.ts b/src/utils/fetch.ts index 78f19269..f7672afa 100644 --- a/src/utils/fetch.ts +++ b/src/utils/fetch.ts @@ -17,7 +17,7 @@ function get(url: string, cookies?: ICookie[]): Promise { }; return new Promise((resolve, reject) => { Taro.request({ - url: url, + url: process.env.HOST + url, header: header, mode: "cors", success: (res) => { @@ -47,7 +47,7 @@ function postJson( }; Taro.request({ - url: url, + url: process.env.HOST + url, data: data ? data : undefined, header: header, method: "POST", diff --git a/src/utils/request/requestImpl.ts b/src/utils/request/requestImpl.ts new file mode 100644 index 00000000..33e1bcda --- /dev/null +++ b/src/utils/request/requestImpl.ts @@ -0,0 +1,75 @@ +import Taro from "@tarojs/taro"; +import RequestError, { MPErrorCode, ServiceErrorCode } from "./errorHandler"; +import { serviceStore } from "@/store"; + +interface IResponse { + code: number; + msg: string; + data: T +} + +const globalConfig: Partial = { + timeout: 12 * 1000 +}; + +type RequestOptionsType

= { + urlPrefix?: string; + method: keyof Taro.request.Method; + params?: P; + /** 将请求参数转换成 snack case,将响应数据转换成 camel case */ + useCamelCase?: boolean; +}; + +/** + * 发送接收 application/json 请求 + * + * @param url 请求地址,不包含协议和域名,会和 `options.urlPrefix` 组成完整的地址 + * @param params GET 请求的 Query 参数,其他请求的 Body 数据 + * @param options + * @throws `RequestError` Instance + * @returns 转换成对象的响应 JSON 数据 + */ +async function request>( + url: string, + options?: RequestOptionsType +): Promise { + const { + urlPrefix = process.env.HOST, + method = "GET", + params + } = options || {}; + + try { + const taroWrapped = await Taro.request>({ + ...globalConfig, + url: urlPrefix + url, + method, + header: { + "Cookie": serviceStore.sessionID + }, + data: params + }); + + const realResponse = taroWrapped.data; + if (realResponse.code === ServiceErrorCode.OK) { + return realResponse.data; + } + return Promise.reject( + new RequestError({ message: realResponse.msg, code: realResponse.code }) + ); + } catch (e: any) { + let message: string; + if (e.errMsg) { + // 微信小程序 request 若抛出错误,一定有 errMsg + message = "小程序请求错误"; + console.error("[微精弘底层]请求发送失败", e); + } else { + message = "小程序未知网络错误"; + console.error("[微精弘底层]未知网络异常", e); + } + + throw new RequestError({ message, code: MPErrorCode.MP_NETWORK_ERROR }); + } +} + +export default request; From 0bc82a1a4d60ef3de66e2bb10f82d57c4f20d423 Mon Sep 17 00:00:00 2001 From: j10c Date: Wed, 16 Oct 2024 23:58:50 +0800 Subject: [PATCH 2/9] feat(request): define error for mp --- src/utils/index.ts | 8 ++++++- src/utils/request/requestError.ts | 35 +++++++++++++++++++++++++++++++ src/utils/request/requestImpl.ts | 2 +- 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 src/utils/request/requestError.ts diff --git a/src/utils/index.ts b/src/utils/index.ts index 4e43e806..692d583a 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -7,6 +7,8 @@ import timeUtils from "./time"; import type { ICookie } from "./cookie"; import type { FetchResult } from "./fetch"; import { debounce } from "./debounce"; +import request from "./request/requestImpl"; +import RequestError, { ServiceErrorCode, MPErrorCode } from "./request/requestError"; export { ICookie, @@ -20,5 +22,9 @@ export { checkBind, checkNotification, timeUtils, - debounce + debounce, + request, + ServiceErrorCode, + MPErrorCode, + RequestError }; diff --git a/src/utils/request/requestError.ts b/src/utils/request/requestError.ts new file mode 100644 index 00000000..670bb1f4 --- /dev/null +++ b/src/utils/request/requestError.ts @@ -0,0 +1,35 @@ +export const MPErrorCode = { + MP_NETWORK_ERROR: Symbol("MP_NETWORK_ERROR") +}; + +export enum ServiceErrorCode { + + OK = 1, + NOT_ADMIN = 100403, + + USER_ALREADY_EXISTED = 200508, + USER_USERNAME_PASSWORD_UNMATCHED = 200504, + USER_NOT_LOGIN = 200503, + + SYSTEM_ERROR_1 = 200500, + SYSTEM_ERROR_2 = 200506, + + ACTIVATION_SCHOOL_ID_OR_ID_NOT_EXIST_NOT_MATCH = 200510, + ACTIVATION_PASSWORD_LENGTH_ERROR = 200511, + ACTIVATION_PASSPORT_EXISTED = 200512, + ACTIVATION_SCHOOL_ID_ERROR = 200513 +} + +export default class RequestError extends Error { + public message: string; + public code: ServiceErrorCode | number | symbol; + + constructor(props: { + message: string; + code: ServiceErrorCode | number | symbol; + }) { + super(); + this.message = props.message; + this.code = props.code; + } +} diff --git a/src/utils/request/requestImpl.ts b/src/utils/request/requestImpl.ts index 33e1bcda..f8d51bca 100644 --- a/src/utils/request/requestImpl.ts +++ b/src/utils/request/requestImpl.ts @@ -1,5 +1,5 @@ import Taro from "@tarojs/taro"; -import RequestError, { MPErrorCode, ServiceErrorCode } from "./errorHandler"; +import RequestError, { MPErrorCode, ServiceErrorCode } from "./requestError"; import { serviceStore } from "@/store"; interface IResponse { From f66f34a769e62096ca630117480938057e2a7977 Mon Sep 17 00:00:00 2001 From: j10c Date: Thu, 17 Oct 2024 15:51:21 +0800 Subject: [PATCH 3/9] fix(request): handle case for missing server resp --- src/utils/request/requestImpl.ts | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/utils/request/requestImpl.ts b/src/utils/request/requestImpl.ts index f8d51bca..46bac28d 100644 --- a/src/utils/request/requestImpl.ts +++ b/src/utils/request/requestImpl.ts @@ -40,7 +40,7 @@ async function request>( } = options || {}; try { - const taroWrapped = await Taro.request>({ + const taroWrapped = await Taro.request | undefined>({ ...globalConfig, url: urlPrefix + url, method, @@ -51,17 +51,22 @@ async function request>( }); const realResponse = taroWrapped.data; - if (realResponse.code === ServiceErrorCode.OK) { - return realResponse.data; + if (realResponse) { + if (realResponse.code === ServiceErrorCode.OK) { + return realResponse.data; + } + + return Promise.reject( + new RequestError({ message: realResponse.msg, code: realResponse.code }) + ); } - return Promise.reject( - new RequestError({ message: realResponse.msg, code: realResponse.code }) - ); + // 如果没有服务端的数据,交给 catch 处理 + throw new Error(JSON.stringify(taroWrapped)); } catch (e: any) { let message: string; - if (e.errMsg) { + if (e?.errMsg) { // 微信小程序 request 若抛出错误,一定有 errMsg - message = "小程序请求错误"; + message = "小程序客户端请求失败"; console.error("[微精弘底层]请求发送失败", e); } else { message = "小程序未知网络错误"; From 82e4e51f23a3d01ccf15de0e9c02f411d9a92b3f Mon Sep 17 00:00:00 2001 From: j10c Date: Thu, 17 Oct 2024 23:17:31 +0800 Subject: [PATCH 4/9] feat(request): new useRequest hook --- src/hooks/index.ts | 3 +- src/hooks/useRequest.ts | 73 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/src/hooks/index.ts b/src/hooks/index.ts index 5076c948..fa5d50b7 100644 --- a/src/hooks/index.ts +++ b/src/hooks/index.ts @@ -1,9 +1,10 @@ import useTimeInstance from "./useTimeString"; -import useRequest from "./useRequest"; +import useRequest, { useRequestNext } from "./useRequest"; import useDarkMode from "./useDarkMode"; export { useTimeInstance, useRequest, + useRequestNext, useDarkMode }; diff --git a/src/hooks/useRequest.ts b/src/hooks/useRequest.ts index 057fc126..5bd787e7 100644 --- a/src/hooks/useRequest.ts +++ b/src/hooks/useRequest.ts @@ -1,6 +1,6 @@ import Taro from "@tarojs/taro"; -import { onMounted, ref } from "vue"; +import { onMounted, ref, shallowRef } from "vue"; interface RequestConfigType { /** 是否手动发起请求 */ @@ -94,3 +94,74 @@ const useRequest = ( }; export default useRequest; + +type UseRequestOptions = { + /** Promise 还未 fulfilled 时,给 `data` 的初始值 */ + initialData: Data; + /** 自动触发请求,以及调用 `run` 函数不传参数时,默认给请求函数传入的参数 */ + defaultParams?: Params; + /** 是否手动触发请求, 默认为 false */ + manual?: boolean; + /** 最短加载时间,默认为 0ms,在有加载动画效果时防止渲染闪屏 */ + minLoadingTime?: number; + /** 在执行 Promise 前,将 `data` 重置为 `initialData`,默认为 false */ + resetOnRun?: boolean; + onSuccess?: (data: Data) => void; + onError?: (error: unknown) => void; +}; + +const promiseTimeout = (ms: number) => { + return new Promise(resolve => { + setTimeout(resolve, ms); + }); +}; + +export function useRequestNext>( + promise: (params?: Params) => Promise, + options: UseRequestOptions +) { + const { + initialData, + defaultParams, + manual = false, + minLoadingTime = 0, + resetOnRun = false, + onSuccess, + onError + } = options ?? {}; + + const loading = ref(false); + const data = ref(initialData); + const error = shallowRef(undefined); + + async function run(params?: Params) { + loading.value = true; + error.value = undefined; + if (resetOnRun) data.value = initialData; + + // 用 `allSettled` 而不用 try-catch 是为了 Delay 也作用到异常状态 + const delayedPromise = Promise.allSettled([ + promise(params ?? defaultParams), + promiseTimeout(minLoadingTime) + ]); + const [promiseResult] = await delayedPromise; + if (promiseResult.status === "fulfilled") { + data.value = promiseResult.value; + onSuccess?.(promiseResult.value); + } else { + error.value = promiseResult.reason; + onError?.(promiseResult.reason); + } + + loading.value = false; + }; + + if (!manual) run(); + + return { + loading, + data, + error, + run + }; +} From 0b12ff393b6f3e9f8dd10360d61f278489c5dc7e Mon Sep 17 00:00:00 2001 From: j10c Date: Fri, 18 Oct 2024 16:15:31 +0800 Subject: [PATCH 5/9] feat(request): request for auth --- src/utils/index.ts | 4 +- src/utils/request/cookie.ts | 62 +++++++++++++++++++++++++++++++ src/utils/request/requestError.ts | 6 ++- src/utils/request/requestImpl.ts | 20 ++++++++-- 4 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 src/utils/request/cookie.ts diff --git a/src/utils/index.ts b/src/utils/index.ts index 692d583a..6ba621b4 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -9,6 +9,7 @@ import type { FetchResult } from "./fetch"; import { debounce } from "./debounce"; import request from "./request/requestImpl"; import RequestError, { ServiceErrorCode, MPErrorCode } from "./request/requestError"; +import CookieUtils from "./request/cookie"; export { ICookie, @@ -26,5 +27,6 @@ export { request, ServiceErrorCode, MPErrorCode, - RequestError + RequestError, + CookieUtils }; diff --git a/src/utils/request/cookie.ts b/src/utils/request/cookie.ts new file mode 100644 index 00000000..c511641a --- /dev/null +++ b/src/utils/request/cookie.ts @@ -0,0 +1,62 @@ +import Taro from "@tarojs/taro"; +import { persistedStateStorage } from "../storage"; +import RequestError, { MPErrorCode, ServiceErrorCode } from "./requestError"; +import { api } from "@/services"; + +export default class CookieUtils { + private static keyInStorage = "__cookie__"; + private static cookie: string = ""; + + /** + * 从内存、持久化储存中获取 Cookie + * + * 若两处都没有 Cookie,则触发登录流程获取新的 Cookie + */ + public static async get(): Promise { + if (!this.cookie) { + const cookieInStore = persistedStateStorage.getItem(this.keyInStorage); + this.cookie = cookieInStore || await this.makeFresh(); + } + + return this.cookie; + } + + /** + * 登录以获取服务端 Cookie + * + * @throws {RequestError} + */ + public static async makeFresh(): Promise { + try { + const { code, errMsg } = await Taro.login({ timeout: 3000 }); + if (!code) { + console.error(new Error(errMsg)); + return Promise.reject(new RequestError({ message: errMsg, code: MPErrorCode.MP_LOGIN_ERROR_MISSING_WX_CODE })); + } + + const loginResult = await Taro.request<{ data: { user: any }, code: number }>({ + url: process.env.HOST + api.user.login.wechat, + data: { code }, + method: "POST" + }); + + if (loginResult.data.code === ServiceErrorCode.OK) { + if (loginResult.cookies && loginResult.cookies.length > 0) { + const cookie = loginResult.cookies[0]; + persistedStateStorage.setItem(this.keyInStorage, cookie); + return; + } + } + return Promise.reject( + new RequestError({ message: "小程序登录失败", code: MPErrorCode.MP_LOGIN_ERROR_MISSING_COOKIE }) + ); + } catch (e) { + console.error(e); + throw new RequestError({ message: "小程序登录失败", code: MPErrorCode.MP_LOGIN_ERROR_UNKNOWN }); + } + } + + public static clear() { + persistedStateStorage.removeItem(this.keyInStorage); + } +} diff --git a/src/utils/request/requestError.ts b/src/utils/request/requestError.ts index 670bb1f4..544a9765 100644 --- a/src/utils/request/requestError.ts +++ b/src/utils/request/requestError.ts @@ -1,9 +1,11 @@ export const MPErrorCode = { - MP_NETWORK_ERROR: Symbol("MP_NETWORK_ERROR") + MP_NETWORK_ERROR: Symbol("MP_NETWORK_ERROR"), + MP_LOGIN_ERROR_MISSING_WX_CODE: Symbol("MP_LOGIN_ERROR_MISSING_WX_CODE"), + MP_LOGIN_ERROR_MISSING_COOKIE: Symbol("MP_LOGIN_ERROR_MISSING_COOKIE"), + MP_LOGIN_ERROR_UNKNOWN: Symbol("MP_LOGIN_ERROR_UNKNOWN") }; export enum ServiceErrorCode { - OK = 1, NOT_ADMIN = 100403, diff --git a/src/utils/request/requestImpl.ts b/src/utils/request/requestImpl.ts index 46bac28d..17bb70d9 100644 --- a/src/utils/request/requestImpl.ts +++ b/src/utils/request/requestImpl.ts @@ -1,6 +1,6 @@ import Taro from "@tarojs/taro"; import RequestError, { MPErrorCode, ServiceErrorCode } from "./requestError"; -import { serviceStore } from "@/store"; +import CookieUtils from "./cookie"; interface IResponse { code: number; @@ -18,6 +18,8 @@ type RequestOptionsType

= { params?: P; /** 将请求参数转换成 snack case,将响应数据转换成 camel case */ useCamelCase?: boolean; + /** 请求是否携带 Cookie,默认为 true,若没有 Cookie 还请求则会触发登录获取 Cookie */ + auth: boolean; }; /** @@ -36,16 +38,28 @@ async function request>( const { urlPrefix = process.env.HOST, method = "GET", - params + params, + auth = true } = options || {}; + let cookie = ""; + if (auth) { + try { + cookie = await CookieUtils.get(); + } catch (e) { + if (e instanceof RequestError) { + Taro.showToast({ title: e.message, icon: "error" }); + } + } + } + try { const taroWrapped = await Taro.request | undefined>({ ...globalConfig, url: urlPrefix + url, method, header: { - "Cookie": serviceStore.sessionID + "Cookie": cookie }, data: params }); From f028cfc5383d8b871993dbcf3234f992f57079ad Mon Sep 17 00:00:00 2001 From: j10c Date: Fri, 18 Oct 2024 16:18:46 +0800 Subject: [PATCH 6/9] chore(project-config): enable transform to es5 --- project.config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.config.json b/project.config.json index ecb4defb..fdddcd66 100644 --- a/project.config.json +++ b/project.config.json @@ -5,7 +5,7 @@ "appid": "wxd4b11753654a636f", "setting": { "urlCheck": false, - "es6": false, + "es6": true, "enhance": false, "postcss": false, "preloadBackgroundData": false, From 246a1c65cb41db91c0968be344c4a9fa29012c29 Mon Sep 17 00:00:00 2001 From: j10c Date: Fri, 18 Oct 2024 18:03:54 +0800 Subject: [PATCH 7/9] fix(cookie): return new cookie after refresh --- src/utils/request/cookie.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/utils/request/cookie.ts b/src/utils/request/cookie.ts index c511641a..bad2bcd9 100644 --- a/src/utils/request/cookie.ts +++ b/src/utils/request/cookie.ts @@ -25,13 +25,16 @@ export default class CookieUtils { * 登录以获取服务端 Cookie * * @throws {RequestError} + * @returns 新 Cookie */ - public static async makeFresh(): Promise { + public static async makeFresh(): Promise { try { const { code, errMsg } = await Taro.login({ timeout: 3000 }); if (!code) { console.error(new Error(errMsg)); - return Promise.reject(new RequestError({ message: errMsg, code: MPErrorCode.MP_LOGIN_ERROR_MISSING_WX_CODE })); + return Promise.reject( + new RequestError({ message: errMsg, code: MPErrorCode.MP_LOGIN_ERROR_MISSING_WX_CODE }) + ); } const loginResult = await Taro.request<{ data: { user: any }, code: number }>({ @@ -44,7 +47,7 @@ export default class CookieUtils { if (loginResult.cookies && loginResult.cookies.length > 0) { const cookie = loginResult.cookies[0]; persistedStateStorage.setItem(this.keyInStorage, cookie); - return; + return cookie; } } return Promise.reject( From 98caa7def3089fa7bd35fa77bf1268666668ccdc Mon Sep 17 00:00:00 2001 From: j10c Date: Fri, 18 Oct 2024 18:14:58 +0800 Subject: [PATCH 8/9] fix(cookie): handle exception when refresh cookie --- src/utils/request/cookie.ts | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/utils/request/cookie.ts b/src/utils/request/cookie.ts index bad2bcd9..452520f3 100644 --- a/src/utils/request/cookie.ts +++ b/src/utils/request/cookie.ts @@ -15,7 +15,7 @@ export default class CookieUtils { public static async get(): Promise { if (!this.cookie) { const cookieInStore = persistedStateStorage.getItem(this.keyInStorage); - this.cookie = cookieInStore || await this.makeFresh(); + this.cookie = cookieInStore || await this.refresh(); } return this.cookie; @@ -27,7 +27,7 @@ export default class CookieUtils { * @throws {RequestError} * @returns 新 Cookie */ - public static async makeFresh(): Promise { + public static async refresh(): Promise { try { const { code, errMsg } = await Taro.login({ timeout: 3000 }); if (!code) { @@ -37,22 +37,23 @@ export default class CookieUtils { ); } - const loginResult = await Taro.request<{ data: { user: any }, code: number }>({ + const taroWrapped = await Taro.request<{ data: { user: any }, code: number }>({ url: process.env.HOST + api.user.login.wechat, data: { code }, method: "POST" }); - - if (loginResult.data.code === ServiceErrorCode.OK) { - if (loginResult.cookies && loginResult.cookies.length > 0) { - const cookie = loginResult.cookies[0]; + const { data: realResponse, cookies } = taroWrapped; + if (realResponse && realResponse.code === ServiceErrorCode.OK) { + if (cookies && cookies.length > 0) { + const cookie = cookies[0]; // 现业务全局仅有一个 Cookie,所以取第一个 persistedStateStorage.setItem(this.keyInStorage, cookie); return cookie; } + return Promise.reject( + new RequestError({ message: "小程序登录失败", code: MPErrorCode.MP_LOGIN_ERROR_MISSING_COOKIE }) + ); } - return Promise.reject( - new RequestError({ message: "小程序登录失败", code: MPErrorCode.MP_LOGIN_ERROR_MISSING_COOKIE }) - ); + throw new Error(JSON.stringify(taroWrapped)); } catch (e) { console.error(e); throw new RequestError({ message: "小程序登录失败", code: MPErrorCode.MP_LOGIN_ERROR_UNKNOWN }); From 3ae3fc0c44d7434de6997ca806091941c55bf9a9 Mon Sep 17 00:00:00 2001 From: j10c Date: Sun, 20 Oct 2024 10:13:06 +0800 Subject: [PATCH 9/9] chore(request): declare deprecated for old logic --- src/hooks/useRequest.ts | 1 + src/services/api/codes.ts | 3 +++ src/services/services/authService.ts | 1 + src/services/utils/errHandler.ts | 6 +++++- src/services/utils/session.ts | 3 +++ src/services/utils/updateDateState.ts | 2 ++ src/utils/fetch.ts | 6 ++++++ src/utils/request/requestImpl.ts | 2 +- 8 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/hooks/useRequest.ts b/src/hooks/useRequest.ts index 5bd787e7..13384d66 100644 --- a/src/hooks/useRequest.ts +++ b/src/hooks/useRequest.ts @@ -36,6 +36,7 @@ interface RequestConfigType { } /** + * @deprecated * 封装请求成 hook * * 为请求函数扩展 diff --git a/src/services/api/codes.ts b/src/services/api/codes.ts index c5ff1e4a..8c97a440 100644 --- a/src/services/api/codes.ts +++ b/src/services/api/codes.ts @@ -1,3 +1,6 @@ +/** + * @deprecated + */ export const ServerCode = { OK: 1, diff --git a/src/services/services/authService.ts b/src/services/services/authService.ts index dbe1866c..1a5e0c03 100644 --- a/src/services/services/authService.ts +++ b/src/services/services/authService.ts @@ -7,6 +7,7 @@ import errCodeHandler from "../utils/errHandler"; import { ServerCode } from "../api/codes"; /** + * @deprecated * 与微信建立链接,获取 session * 场景: 发送带 session 的请求 postWithSession,打开小程序页面 */ diff --git a/src/services/utils/errHandler.ts b/src/services/utils/errHandler.ts index 3c5075c9..cef4f362 100644 --- a/src/services/utils/errHandler.ts +++ b/src/services/utils/errHandler.ts @@ -2,7 +2,11 @@ import { ServerCode } from "../api/codes"; import Taro from "@tarojs/taro"; import store, { serviceStore } from "@/store"; -// comment: 微信相关登录异常处理 +/** + * @deprecated + * 微信相关登录异常处理 + * TODO: 迁移处理逻辑至具体的业务模块 + */ export default async function errCodeHandler(code: number, showModal = true) { console.error("Error code", code); if (showModal) diff --git a/src/services/utils/session.ts b/src/services/utils/session.ts index 9c049302..49a08ca6 100644 --- a/src/services/utils/session.ts +++ b/src/services/utils/session.ts @@ -5,6 +5,7 @@ import { LoginByTaro } from "../services/authService"; import { ServerCode } from "../api/codes"; /** + * @deprecated * 调用 fetch 带上 session 发送请求 * * 一般通过 `updateDateStateWithSession` 调用 @@ -42,6 +43,7 @@ async function postWithSession( } /** + * @deprecated * 检查有无 session * @returns 状态 */ @@ -50,6 +52,7 @@ function checkSession(): boolean { } /** + * @deprecated * 检查 session 对应的微信用户有没有激活记录 * @returns 状态 */ diff --git a/src/services/utils/updateDateState.ts b/src/services/utils/updateDateState.ts index c20f9ccb..3c267944 100644 --- a/src/services/utils/updateDateState.ts +++ b/src/services/utils/updateDateState.ts @@ -5,6 +5,7 @@ import { ServerCode } from "../api/codes"; import errCodeHandler from "./errHandler"; /** + * @deprecated * 无 session 请求更新全局状态,系统请求专用 * @param api * @param data @@ -34,6 +35,7 @@ async function updateDateState( } /** + * @deprecated * 带 session 发送请求,并更新状态 * @param api * @param data diff --git a/src/utils/fetch.ts b/src/utils/fetch.ts index f7672afa..46abc9b1 100644 --- a/src/utils/fetch.ts +++ b/src/utils/fetch.ts @@ -6,6 +6,9 @@ interface FetchResult extends Taro.request.SuccessCallbackResult { cookies?: string[]; } +/** + * @deprecated + */ function get(url: string, cookies?: ICookie[]): Promise { const header = cookies ? { @@ -31,6 +34,9 @@ function get(url: string, cookies?: ICookie[]): Promise { }); } +/** + * @deprecated + */ function postJson( url: string, data: any, diff --git a/src/utils/request/requestImpl.ts b/src/utils/request/requestImpl.ts index 17bb70d9..ebbcaec7 100644 --- a/src/utils/request/requestImpl.ts +++ b/src/utils/request/requestImpl.ts @@ -16,7 +16,7 @@ type RequestOptionsType

= { urlPrefix?: string; method: keyof Taro.request.Method; params?: P; - /** 将请求参数转换成 snack case,将响应数据转换成 camel case */ + /** TODO: 将请求参数转换成 snack case,将响应数据转换成 camel case */ useCamelCase?: boolean; /** 请求是否携带 Cookie,默认为 true,若没有 Cookie 还请求则会触发登录获取 Cookie */ auth: boolean;