跳转至

00. 约定与鉴权

1. 基础信息

  • HTTP 前缀:/api
  • WebSocket 地址:/ws
  • 数据格式:application/json(文件上传除外)
  • 时间格式:2006-01-02 15:04:05(如 2026-04-05 16:30:00

2. 鉴权方式

2.1 Access Token

受保护接口需要:

Authorization: Bearer <access_token>
  • Access Token 默认有效期:3 小时。
  • 登录成功后会返回:tokenrefresh_token
  • Cookie 名:refresh_token
  • Path:/api/auth
  • HttpOnly:true
  • 过期:14 天

刷新接口:POST /api/auth/refresh - 优先读取 Cookie。 - 也可 body 传 refresh_token(桌面/移动端)。

  • Cookie 名:ws_token
  • Path:/
  • HttpOnly:true
  • 由登录/刷新或 POST /api/auth/ws-token/sync 同步。

/ws 只从 Cookie 读取 token,不从 URL/query 读取。

3. 统一响应结构

大部分接口:

{
  "code": 200,
  "message": "成功",
  "data": {}
}

常见错误:

{ "code": 400, "message": "请求参数错误" }
{ "code": 401, "message": "未授权" }
{ "code": 403, "message": "需要管理员权限" }
{ "code": 404, "message": "资源不存在" }
{ "code": 429, "message": "请求过于频繁,请稍后重试", "data": { "retry_after": 9 } }
{ "code": 500, "message": "服务器内部错误" }

4. 分页约定

常见请求参数: - page(默认 1) - page_sizelimit(默认 20)

常见返回:

{
  "total": 123,
  "items": [],
  "page": 1,
  "page_size": 20
}

5. 权限分层

  • 公开:无需登录
  • JWT:登录后可访问
  • JWT + Approved:账号需审核通过(或管理员绕过)
  • Admin:管理员
  • Admin/GroupOwner:管理员或群组创建者

6. 限流(代码内置)

  • /api/device/pre-check:IP 每秒 1 次;MAC 每分钟 5 次
  • /api/device/request-code:IP 每 10 秒 1 次;MAC 每分钟 1 次
  • /api/device/confirm-bind:MAC 每 5 秒 1 次
  • /api/device/bind:用户每分钟 5 次
  • /api/device/submit-config:用户每分钟 10 次
  • /api/public/relays:IP 每分钟 10 次

7. 安全限制

  • 任何 token 类 query 参数(token/access_token/refresh_token/jwt/...)会被网关直接拒绝:
{ "code": 400, "message": "token_query_not_allowed" }