ソースを参照

feat(http): 兼容0和200作为成功状态码

由于不同接口可能返回0或200作为成功状态码,将ResultEnum中的Success拆分为Success0和Success200,并修改相关业务逻辑判断
feige996 7 ヶ月 前
コミット
b97afe0a0e
4 ファイル変更6 行追加4 行削除
  1. 1 1
      src/http/alova.ts
  2. 1 1
      src/http/http.ts
  3. 3 1
      src/http/tools/enum.ts
  4. 1 1
      src/store/user.ts

+ 1 - 1
src/http/alova.ts

@@ -100,7 +100,7 @@ const alovaInstance = createAlova({
 
     // 处理业务逻辑错误
     const { code, message, data } = rawData as IResponse
-    if (code !== ResultEnum.Success) {
+    if (code !== ResultEnum.Success0 && code !== ResultEnum.Success200) {
       if (config.meta?.toast !== false) {
         uni.showToast({
           title: message,

+ 1 - 1
src/http/http.ts

@@ -25,7 +25,7 @@ export function http<T>(options: CustomRequestOptions) {
         if (res.statusCode >= 200 && res.statusCode < 300) {
           // 2.1  处理业务逻辑错误
           const { code, message, data } = res.data as IResponse<T>
-          if (code !== ResultEnum.Success) {
+          if (code !== ResultEnum.Success0 && code !== ResultEnum.Success200) {
             throw new Error(`请求错误[${code}]:${message}`)
           }
           return resolve(data as T)

+ 3 - 1
src/http/tools/enum.ts

@@ -1,5 +1,7 @@
 export enum ResultEnum {
-  Success = 0, // 成功
+  // 0和200当做成功都很普遍,这里直接兼容两者(PS:0和200通常都不会当做错误码,但是有的接口会返回0,有的接口会返回200)
+  Success0 = 0, // 成功
+  Success200 = 200, // 成功
   Error = 400, // 错误
   Unauthorized = 401, // 未授权
   Forbidden = 403, // 禁止访问(原为forbidden)

+ 1 - 1
src/store/user.ts

@@ -43,7 +43,7 @@ export const useUserStore = defineStore(
      */
     const fetchUserInfo = async () => {
       const res = await getUserInfo()
-      setUserInfo(res.data)
+      setUserInfo(res)
       return res
     }