错误码参考
本文档列出了 NexusBook API 所有可能返回的错误码及其说明。
错误响应格式
所有错误响应遵循统一格式:
{
"success": false,
"code": "ERROR_CODE",
"message": {
"zh": "错误信息(中文)",
"en": "Error message (English)"
},
"payload": null
}
HTTP 状态码映射
| HTTP 状态码 | 说明 | 示例错误码 |
|---|---|---|
| 400 | 请求参数错误 | INVALID_PARAMETER, VALIDATION_ERROR |
| 401 | 未认证 | INVALID_TOKEN, UNAUTHORIZED |
| 403 | 权限不足 | FORBIDDEN, INSUFFICIENT_SCOPE |
| 404 | 资源不存在 | DOC_NOT_FOUND, ROW_NOT_FOUND |
| 409 | 资源冲突 | VERSION_CONFLICT, DUPLICATE_ID |
| 429 | 请求过于频繁 | RATE_LIMIT_EXCEEDED |
| 500 | 服务器错误 | INTERNAL_ERROR |
认证相关错误
INVALID_CLIENT
- 说明:客户端凭证无效
- 原因:client_id 或 client_secret 错误
- 解决方案:检查客户端凭证是否正确
INVALID_TOKEN
- 说明:访问令牌无效或已过期
- 原因:Token 过期、格式错误或已被撤销
- 解决方案:使用 refresh_token 刷新或重新获取 Token
UNAUTHORIZED
- 说明:未提供认证信息
- 原因:请求头中缺少 Authorization
- 解决方案:添加
Authorization: Bearer YOUR_TOKEN
FORBIDDEN
- 说明:权限不足
- 原因:Token 的 Scope 不包含所需权限
- 解决方案:请求包含所需权限的 Token
INSUFFICIENT_SCOPE
- 说明:Scope 权限不足
- 原因:操作需要的权限未在 Token 中授予
- 解决方案:重新获取包含所需 Scope 的 Token
文档相关错误
DOC_NOT_FOUND
- 说明:文档不存在
- 原因:指定的 doc-id 不存在
- 解决方案:检查文档 ID 是否正确
DOC_TYPE_UNKNOWN
- 说明:未知的文档类型
- 原因:doc-type 参数不被支持
- 解决方案:检查文档类型拼写
DOC_ACCESS_DENIED
- 说明:文档访问被拒绝
- 原因:用户无权访问该文档
- 解决方案:联系文档所有者授予权限
DOC_LOCKED
- 说明:文档已被锁定
- 原因:文档处于锁定状态,不允许修改
- 解决方案:等待锁定解除或联系管理员
视图相关错误
VIEW_NOT_FOUND
- 说明:视图不存在
- 原因:指定的 view-id 不存在
- 解决方案:检查视图 ID 是否正确
VIEW_INVALID_DEFINITION
- 说明:视图定义无效
- 原因:视图配置不符合规范
- 解决方案:检查视图配置,确保字段 ID、过滤条件等正确
VIEW_PERMISSION_DENIED
- 说明:无权操作视图
- 原因:用户无权创建、修改或删除视图
- 解决方案:请求
views:manage权限
数据相关错误
ROW_NOT_FOUND
- 说明:数据行不存在
- 原因:指定的 row-id 不存在
- 解决方案:检查行 ID 是否正确
FIELD_TYPE_MISMATCH
- 说明:字段类型不匹配
- 原因:提供的值类型与字段定义不符
- 解决方案:检查字段值格式
CONSTRAINT_VIOLATION
- 说明:约束违反
- 原因:违反了字段的验证规则(必填、唯一等)
- 解决方案:检查数据是否满足字段约束
VERSION_CONFLICT
- 说明:版本冲突
- 原因:数据已被其他用户修改
- 解决方案:刷新数据后重试
DUPLICATE_ID
- 说明:ID 重复
- 原因:尝试创建的 ID 已存在
- 解决方案:使用不同的 ID
INVALID_FIELD_ID
- 说明:无效的字段 ID
- 原因:元数据中不存在该字段
- 解决方案:检查字段 ID 拼写
REQUIRED_FIELD_MISSING
- 说明:必填字段缺失
- 原因:未提供必填字段的值
- 解决方案:补充必填字段
VALIDATION_ERROR
- 说明:数据验证失败
- 原因:数据不符合验证规则
- 解决方案:检查数据格式和范围
评论相关错误
COMMENT_NOT_FOUND
- 说明:评论不存在
- 原因:指定的 comment-id 不存在
- 解决方案:检查评论 ID 是否正确
COMMENT_PERMISSION_DENIED
- 说明:无权操作评论
- 原因:只有评论创建者或管理员可以编辑/删除
- 解决方案:确认操作权限
审批相关错误
APPROVAL_NOT_FOUND
- 说明:审批实例不存在
- 原因:指定的审批 ID 不存在
- 解决方案:检查审批 ID 是否正确
APPROVAL_ALREADY_COMPLETED
- 说明:审批已完成
- 原因:审批流程已结束
- 解决方案:无需再次审批
APPROVAL_PERMISSION_DENIED
- 说明:无审批权限
- 原因:用户不在审批人列表中
- 解决方案:确认审批权限
Webhook 相关错误
WEBHOOK_NOT_FOUND
- 说明:Webhook 不存在
- 原因:指定的 webhook-id 不存在
- 解决方案:检查 Webhook ID
WEBHOOK_URL_INVALID
- 说明:Webhook URL 无效
- 原因:URL 格式错误或无法访问
- 解决方案:检查 URL 格式
WEBHOOK_DELIVERY_FAILED
- 说明:Webhook 投递失败
- 原因:目标服务器返回错误或超时
- 解决方案:检查目标服务器状态
请求相关错误
REQUEST_NOT_FOUND
- 说明:变更请求不存在
- 原因:指定的 request-id 不存在
- 解决方案:检查请求 ID
REQUEST_ALREADY_MERGED
- 说明:请求已合并
- 原因:变更请求已经被合并
- 解决方案:无需再次合并
REQUEST_CONFLICT
- 说明:请求冲突
- 原因:请求中的变更与当前状态冲突
- 解决方案:解决冲突后重试
通用错误
INVALID_PARAMETER
- 说明:参数无效
- 原因:请求参数格式错误或缺失
- 解决方案:检查请求参数
RATE_LIMIT_EXCEEDED
- 说明:请求频率超限
- 原因:短时间内请求过多
- 解决方案:降低请求频率,查看
Retry-After响应头
INTERNAL_ERROR
- 说明:服务器内部错误
- 原因:服务器处理请求时发生异常
- 解决方案:稍后重试,如果持续出现请联系技术支持
SERVICE_UNAVAILABLE
- 说明:服务暂时不可用
- 原因:服务器维护或过载
- 解决方案:稍后重试
错误处理最佳实践
1. 错误重试策略
async function retryableRequest(requestFn, maxRetries = 3) {
const retryableCodes = ['INTERNAL_ERROR', 'SERVICE_UNAVAILABLE'];
for (let i = 0; i < maxRetries; i++) {
try {
return await requestFn();
} catch (error) {
if (!retryableCodes.includes(error.code) || i === maxRetries - 1) {
throw error;
}
// 指数退避
await sleep(Math.pow(2, i) * 1000);
}
}
}
2. 用户友好提示
function getUserFriendlyMessage(error, userLang = 'zh') {
// 优先使用 API 返回的多语言消息
if (error.message && error.message[userLang]) {
return error.message[userLang];
}
// 降级到通用提示
const fallbackMessages = {
'INVALID_TOKEN': '登录已过期,请重新登录',
'FORBIDDEN': '您没有权限执行此操作',
'VERSION_CONFLICT': '数据已被修改,请刷新后重试',
'RATE_LIMIT_EXCEEDED': '操作过于频繁,请稍后再试'
};
return fallbackMessages[error.code] || '操作失败,请稍后重试';
}
3. 错误日志记录
function logError(error, context) {
logger.error('API Error', {
code: error.code,
message: error.message,
endpoint: context.endpoint,
method: context.method,
userId: context.userId,
timestamp: new Date().toISOString()
});
}
实时协同相关错误
WS_AUTH_FAILED
- 说明:WebSocket 认证失败
- 原因:连接令牌无效或过期
- 解决方案:重新获取连接信息并认证
WS_RATE_LIMITED
- 说明:WebSocket 消息速率超限
- 原因:单位时间内消息过多
- 解决方案:降低消息频率或启用批处理
LOCK_CONFLICT
- 说明:单元格锁冲突
- 原因:目标单元格已被其他会话锁定
- 解决方案:等待释放或申请更长的锁定时间
SSE_UNSUPPORTED
- 说明:目标环境不支持 SSE
- 原因:代理或浏览器限制
- 解决方案:改用 WebSocket 或轮询