refactor(http): 改进响应类型兼容性并处理多种消息字段
修改 IResponse 接口为联合类型以兼容不同后端返回格式(message/msg) 在错误处理中同时检查 message 和 msg 字段
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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 // 允许额外属性
|
||||
}
|
||||
|
||||
// 分页请求参数
|
||||
|
||||
Reference in New Issue
Block a user