Skip to content

Latest commit

 

History

History
135 lines (95 loc) · 5.13 KB

File metadata and controls

135 lines (95 loc) · 5.13 KB

Rizline API

约定

基址:http://localhost:3000,子路径部署示例:https://your-host/rizline。

项目 规则
鉴权 /api/* 携带 api-key;/web/* 供网页匿名调用
请求格式 POST 使用 JSON;图片接口同时接受 GET 查询参数
限流 API 按 Key 和接口分别计数;网页按接口全局计数
API 登录开关 rizline.allowApiLogin=true 时开放 /api/login/*
凭证 rizToken;亦接受参数别名 token 和裸 JWT
样例凭证 test、demo、sample

rizToken 为 base64url(JSON.stringify({t,d,c})),分别包含 JWT、device ID、channel ID。推荐通过 POST 请求体传递。

接口目录

以下接口均提供 /api 与 /web 两种前缀。

方法 路径 用途
POST /api/session 查询成绩报告
GET / POST /api/image 生成成绩图
POST /api/login/check 创建登录会话并判断登录方式
POST /api/login/code 发送短信验证码
POST /api/login/submit 提交密码或验证码

成绩报告

POST /api/session

参数 类型 必填 含义
rizToken string 是 登录凭证

成功返回 200,JSON 字段如下:

字段 内容
user userId、nickname、称号和 rizcard 名片数据
summary totalRks、computedRks、displayRks、计分数量、空槽及完成度统计
best fc5、b35 两组成绩
slots 按 FC5、B35 排列的 40 个槽位;空槽含 empty: true、group、rank
difficultyColors 各难度的显示颜色
comparison 历史对比状态、变化数量及总 RKS 差值
generatedAt 报告生成时间
成绩项字段 含义
id / name / artist / disc 曲目 ID、名称、曲师、系列
level / constant / designer 难度类别、定数、谱师
score / completeRate / fc / clear 分数、完成率百分比、全连、通关状态
rks 云存档提供的精确单谱 RKS
rksCeiling / rksRoom 单谱理论上限与提升空间
illustrationUrl / difficultyColor 曲绘路径与难度颜色
change 新增或提升时提供变化详情

change 包含 isNew、isImproved、promoted、scoreDelta、completeRateDelta、rksDelta 和 rksContribution。历史对比以同一玩家的上一版存档为基准。

summary.totalMismatch 有值时表示存档总 RKS 与汇总结果存在差异;comparison.unavailable=true 表示历史对比暂时不可用。资源路径相对于服务根目录。

成绩图

GET /api/image 或 POST /api/image。接受成绩报告的全部参数,并增加:

参数 类型 默认值 含义
scale number 2 分辨率倍率,支持 2、6
base64 boolean false 返回 Data URL JSON

默认返回 PNG 二进制,响应头包含 X-Image-Scale、X-Image-Width、X-Image-Height。

base64=true 的响应字段为 mime、width、height、scale、slotCount、image。其中 image 为 data:image/png;base64,...,slotCount 为 40。

登录

创建会话

POST /api/login/check

参数 类型 必填 含义
phone string 是 6–15 位数字手机号

返回 { "loginId": "...", "mode": "code", "needsCode": true }。

mode 为 password 或 code。loginId 有效期 10 分钟,后续请求携带同一 ID 和手机号。

发送验证码

POST /api/login/code,参数为 loginId、phone,均为必填字符串。

成功返回 { "sent": true, "cooldownSeconds": 60 }。

短信限制 默认值
同号冷却 60 秒,配置下限 30 秒
同号次数 每 24 小时 5 次
同 IP 次数 每小时 10 次

短信额度与接口 RPM 同时生效,计数在进程内存中维护。

提交登录

POST /api/login/submit

参数 类型 必填 含义
loginId string 是 登录会话 ID
phone string 是 手机号
code string 二选一 短信验证码
password string 二选一 账号密码

成功返回 { "ok": true, "rizToken": "...", "userId": "...", "expiresAt": "..." },随后该会话结束。

业务失败返回 200,内容为 { "ok": false, "needsCode": false, "message": "..." };needsCode=true 时改用验证码。有效期内可继续使用原会话重试。

错误与限流

错误响应为 { "error": "错误说明" }。

HTTP 状态 含义
400 参数、凭证格式或登录会话错误
401 API Key 校验失败
403 凭证过期或 API 登录开关关闭
409 同一登录会话已有请求正在处理
413 请求体超过配置上限
429 接口或短信限流
500 服务或上游处理失败
503 服务尚未配置 API Key

429 携带 Retry-After;接口 RPM 限流另带 X-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Reset,时间值以秒计。登录及成绩响应使用 Cache-Control: no-store。