feat(frontend): 对接后端统一响应格式,增强错误处理
- 新增 types/api.ts,定义 ApiResponse/PaginatedData 泛型类型和业务错误码常量 - 增强 request.ts 拦截器:提取后端错误信息、映射 HTTP 状态码和业务错误码为中文提示 - 为 auth/audit/subsystem API 添加泛型返回类型 - 为各视图添加 try/catch 防止未处理的 Promise 拒绝
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* 后端统一响应格式类型定义
|
||||
* 对应 server/internal/handler/response.go
|
||||
*/
|
||||
|
||||
/** 统一 JSON 响应信封 */
|
||||
export interface ApiResponse<T = any> {
|
||||
/** 业务状态码,0 表示成功 */
|
||||
code: number
|
||||
/** 提示信息 */
|
||||
message: string
|
||||
/** 响应数据 */
|
||||
data: T
|
||||
/** 参数校验错误详情(可选) */
|
||||
details?: Record<string, string[]>
|
||||
}
|
||||
|
||||
/** 分页数据结构 */
|
||||
export interface PaginatedData<T> {
|
||||
total: number
|
||||
items: T[]
|
||||
}
|
||||
|
||||
/** 业务错误码常量,与后端一一对应 */
|
||||
export const ApiCode = {
|
||||
/** 成功 */
|
||||
SUCCESS: 0,
|
||||
/** LDAP 认证失败 */
|
||||
LDAP_AUTH_FAILED: 10001,
|
||||
/** 用户名或密码错误 */
|
||||
INVALID_CREDENTIALS: 10002,
|
||||
/** Token 已过期 */
|
||||
TOKEN_EXPIRED: 10003,
|
||||
/** SSO 未配置 */
|
||||
SSO_NOT_CONFIGURED: 10004,
|
||||
/** SSO 跳转地址生成失败 */
|
||||
SSO_GENERATE_FAILED: 10005,
|
||||
/** 任务创建失败 */
|
||||
TASK_CREATE_FAILED: 20001,
|
||||
/** 任务执行超时 */
|
||||
TASK_EXEC_TIMEOUT: 20002,
|
||||
} as const
|
||||
|
||||
/** 错误码到用户友好提示的映射 */
|
||||
export const codeMessageMap: Record<number, string> = {
|
||||
[ApiCode.LDAP_AUTH_FAILED]: 'LDAP 认证服务异常,请稍后重试',
|
||||
[ApiCode.INVALID_CREDENTIALS]: '用户名或密码错误',
|
||||
[ApiCode.TOKEN_EXPIRED]: '登录已过期,请重新登录',
|
||||
[ApiCode.SSO_NOT_CONFIGURED]: '该子系统未配置 SSO,请联系管理员',
|
||||
[ApiCode.SSO_GENERATE_FAILED]: '生成 SSO 跳转链接失败,请稍后重试',
|
||||
[ApiCode.TASK_CREATE_FAILED]: '创建任务失败,请检查参数后重试',
|
||||
[ApiCode.TASK_EXEC_TIMEOUT]: '任务执行超时,请稍后查看结果',
|
||||
}
|
||||
Reference in New Issue
Block a user