跳到主要内容

错误码

所有 API 响应均使用 HTTP 200。响应包装结构中的 code 字段决定了请求的结果。0 始终表示成功。每个非零错误码代表客户端应当处理的特定失败情况。

错误码参考

错误码类别含义
0成功请求成功
4000x — 参数错误
40001参数缺少必填参数
40002参数参数格式无效(类型错误、格式错误)
4010x — 认证错误
40100认证未登录——未提供令牌
40101认证访问令牌已过期——请使用刷新端点
40102认证需要双因素认证——请提供 TOTP 码
40103认证双因素认证失败——TOTP 码不正确或已过期
4030x — 权限错误
40300权限用户无权执行此操作
40301权限用户无权访问所请求的集群
40302权限用户无权访问所请求的命名空间
4040x — 资源未找到错误
40400未找到集群中未找到 Kubernetes 资源
40401未找到未找到 KubeVision 用户
40402未找到未找到集群配置
4090x — 冲突错误
40900冲突资源已存在(创建冲突)
40901冲突资源版本冲突——请重新获取后再重试更新
4220x — 验证错误
42200验证YAML 语法无效或无法解析
42201验证预演请求被 Kubernetes API Server 拒绝
5000x / 5020x — 服务端错误
50000服务端服务器内部错误——请使用 requestId 检查后端日志
50200服务端无法访问所请求集群的 Kubernetes API Server

在前端处理错误

推荐的做法是使用一个统一的 Axios 响应拦截器,将 code 值映射到面向用户的操作。以下示例取自 KubeVision 前端源码:

import axios from "axios";
import { useAuthStore } from "@/store/auth";
import { toast } from "@/components/ui/use-toast";

axios.interceptors.response.use(
(response) => {
const { code, message, data } = response.data;

if (code === 0) return response;

// 令牌过期——尝试静默刷新,然后重试
if (code === 40101) {
return useAuthStore.getState().refreshAndRetry(response.config);
}

// 需要双因素认证——跳转到双因素认证页面
if (code === 40102) {
window.location.href = "/auth/2fa";
return Promise.reject(new Error(message));
}

// 未登录——跳转到登录页
if (code === 40100) {
useAuthStore.getState().logout();
return Promise.reject(new Error(message));
}

// 其他所有错误——显示 toast 提示并拒绝
toast({ variant: "destructive", title: `Error ${code}`, description: message });
return Promise.reject(new Error(message));
}
);
提示

报告 50000 错误时,请始终附上 meta.requestId 中的值。它能让后端团队立即定位到对应的日志条目。

注意

切勿将原始的 50000 错误详情暴露给最终用户。服务端错误的 message 字段是有意设计为通用描述的。完整的错误上下文仅在后端结构化日志中可见。

相关文档

  • API 概览 — 统一响应格式与 meta 对象
  • 认证401xx 认证流程详情
  • RBAC403xx 权限错误与角色定义的对应关系