# 8.2 错误码对照表 :::tip 概述 所有接口返回统一的 JSON 结构,通过 `code` 字段区分业务状态。前端应根据 `code` 做差异化处理。 ::: ## 业务错误码 | code | ok | 含义 | 使用场景 | 前端处理 | |------|-----|------|----------|----------| | `0` | true | 成功 | 所有成功操作 | 正常处理 data | | `1` | false | 一般失败 | 业务逻辑失败 | 显示 msg 提示 | | `401` | false | 未授权 | Token 缺失/无效/过期 | 跳转登录页 | | `403` | false | 禁止访问 | 权限不足/租户异常/演示环境 | 显示无权限提示 | | `404` | false | 数据不存在 | 查询单条记录为空 | 显示数据不存在 | | `422` | false | 参数验证失败 | 表单验证不通过 | 显示具体字段错误 | ## 响应示例 > 响应示例详见 [统一响应格式](/zh/api-spec/response.html) ## 常见错误消息 ### 认证相关 | 消息 | 原因 | 解决方案 | |------|------|----------| | `未提供认证令牌` | 请求头缺少 Authorization | 携带 Token | | `无效的认证令牌` | Token 类型不是 access | 使用 access_token | | `token已过期` | Token 超过有效期 | 调用刷新接口或重新登录 | | `用户名或密码错误` | 账号或密码不正确 | 检查输入 | | `账号已被禁用` | 用户 status != 1 | 联系管理员 | ### 权限相关 | 消息 | 原因 | 解决方案 | |------|------|----------| | `无访问权限:xxx` | 用户无该接口权限 | 联系管理员分配权限 | | `租户已被禁用` | 租户 status != 1 | 联系平台管理员 | | `租户已过期` | 租户 expire_time 已过 | 续费或联系平台 | | `演示环境,禁止操作` | 演示模式下写操作被拦截 | 非演示环境操作 | ### 业务相关 | 消息 | 原因 | 解决方案 | |------|------|----------| | `xxx已存在` | 唯一性校验失败 | 修改重复字段值 | | `数据不存在` | 记录已被删除或不存在 | 刷新列表 | | `请选择要删除的数据` | 批量删除时 ids 为空 | 先选择数据 | | `该部门下存在子部门,不可删除` | 删除前钩子校验 | 先删除子部门 | ## 前端错误处理 ```typescript // Axios 响应拦截器 import { message } from 'ant-design-vue'; axios.interceptors.response.use(response => { const { code, msg, data } = response.data; if (code === 0) { return data; // 成功 } if (code === 401) { // Token 过期,跳转登录 router.push('/login'); return; } if (code === 403) { message.error(msg || '无权限'); return; } // 其他错误 message.error(msg || '操作失败'); return Promise.reject(new Error(msg)); }); ```