Explorar o código

refactor(http): 改进响应类型兼容性并处理多种消息字段

修改 IResponse 接口为联合类型以兼容不同后端返回格式(message/msg)
在错误处理中同时检查 message 和 msg 字段
feige996 hai 7 meses
pai
achega
08a81e433b
Modificáronse 2 ficheiros con 11 adicións e 6 borrados
  1. 2 2
      src/http/http.ts
  2. 9 4
      src/http/types.ts

+ 2 - 2
src/http/http.ts

@@ -24,10 +24,10 @@ export function http<T>(options: CustomRequestOptions) {
         // 状态码 2xx,参考 axios 的设计
         if (res.statusCode >= 200 && res.statusCode < 300) {
           // 2.1  处理业务逻辑错误
-          const { code, message, data } = res.data as IResponse<T>
+          const { code, message, msg, data } = res.data as IResponse<T>
           // 0和200当做成功都很普遍,这里直接兼容两者,见 ResultEnum
           if (code !== ResultEnum.Success0 && code !== ResultEnum.Success200) {
-            throw new Error(`请求错误[${code}]:${message}`)
+            throw new Error(`请求错误[${code}]:${message || msg}`)
           }
           return resolve(data as T)
         }

+ 9 - 4
src/http/types.ts

@@ -12,12 +12,17 @@ export interface HttpRequestResult<T> {
   requestTask: UniApp.RequestTask
 }
 
-// 通用响应格式
-export interface IResponse<T = any> {
-  code: number | string
+// 通用响应格式(兼容 msg + message 字段)
+export type IResponse<T = any> = {
+  code: number
   data: T
   message: string
-  status: string | number
+  [key: string]: any // 允许额外属性
+} | {
+  code: number
+  data: T
+  msg: string
+  [key: string]: any // 允许额外属性
 }
 
 // 分页请求参数