跳到主要内容

错误

错误体

所有错误以 JSON 返回,仅含一个 detail 字段:

{ "detail": "<人类可读的消息>" }

这是 FastAPI 的默认错误体。本接口没有机器可读的错误码;客户端应基于 HTTP 状态码分支处理。

detail 字符串目前后端以中文书写(例如 "策略不存在")。英文对照见各端点的错误表,请勿基于字面字符串解析。

HTTP 状态码

状态码含义典型触发
400请求错误创建策略时 name 重名、Pydantic/FastAPI 校验失败、缺少必填查询参数
404未找到策略 ID 在数据库中不存在
429限流每 IP 速率超限(见下)
500服务器内部错误FastAPI 处理器中未捕获的异常
502上游失败后端调用 Binance 时失败({"detail": "Binance请求失败: <原因>"}

限流响应

每 IP 在 60 秒窗口内超出 1000 次时返回 HTTP 429

{ "detail": "请求过于频繁。每个 IP 每分钟最多允许 1000 次请求。" }

同时该 IP 会被封锁 1 小时。封锁期间再次请求返回:

{ "detail": "IP <ip> 已被暂时封锁。请求过于频繁,请稍后再试。" }

//health 不计入限流,永远不会返回 429。

校验错误(FastAPI 默认)

请求未通过 Pydantic 校验时,FastAPI 返回 HTTP 422,使用其标准校验错误体:

{
"detail": [
{
"loc": ["body", "name"],
"msg": "field required",
"type": "value_error.missing"
}
]
}

只有校验失败会出现这种结构;所有手动抛出的错误都使用前面那种简单的 {"detail": "<string>"} 形式。