| 路径 | 方法 | 作用 | |
|---|---|---|---|
/ |
GET |
显示主页 | |
| Jump | /query |
GET |
获取状态 |
| Jump | /status_list |
GET |
获取可用状态列表 |
| Jump | /metrics |
GET |
获取统计信息 |
/query
获取当前的状态
- Method: GET
- 无需鉴权
其中日期/时间的时区默认为
Asia/Shanghai, 可在 config.json 中修改
/status_list
获取可用状态的列表
- Method: GET
- 无需鉴权
- Alias:
/get/status_list(兼容旧版本)
[
{
"id": 0, // 索引,取决于配置文件中的有无
"name": "活着", // 状态名称
"desc": "目前在线,可以通过任何可用的联系方式联系本人。", // 状态描述
"color": "awake" // 状态颜色, 对应 static/style.css 中的 .sleeping .awake 等类
},
{
"id": 1,
"name": "似了",
"desc": "睡似了或其他原因不在线,紧急情况请使用电话联系。",
"color": "sleeping"
},
// 以此类推
]就是返回
config.json中的status_list列表
/metrics
获取统计信息
- Method: GET
- 无需鉴权
Tip
本接口较特殊: 如服务器关闭了统计 (config.json 中的 metrics 为 false), 则 /metrics 路由将不会被创建, 体现为访问显示 404 页面而不是返回结果
我也不知道自己怎么想的
在需要鉴权的路由中,鉴权通过后才会计入统计
Warning
目前 data.py 逻辑可能存在问题,会导致 metrics 数据无故被清空,原因未知
{
"time": "2025-01-22 08:40:48.564728+08:00", // 服务端时间
"timezone": "Asia/Shanghai", // 时区
"today_is": "2025-1-22", // 今日日期
"month_is": "2025-1", // 今日月份
"year_is": "2025", // 今日年份
"today": { // 今天的数据
"/device/set": 18,
"/": 2,
"/style.css": 1,
"/query": 2
},
"month": { // 今月的数据
"/device/set": 18,
"/": 2,
"/style.css": 1,
"/query": 2
},
"year": { // 今年的数据
"/device/set": 18,
"/": 2,
"/style.css": 1,
"/query": 2
},
"total": { // 总统计数据,不清除
"/device/set": 18,
"/": 2,
"/style.css": 1,
"/query": 2
}
}| 路径 | 方法 | 作用 | |
|---|---|---|---|
| Jump | /set?secret=<secret>&status=<status> |
GET |
设置状态 |
/set/<secret>/<status> |
GET |
- |
/set?secret=<secret>&status=<status>
设置当前状态
- Method: GET
- Alias:
/set/<secret>/<status>
<secret>: 在config.json中配置的secret<status>: 状态码 (int)
// 成功
{
"success": true, // 请求是否成功
"code": "OK", // 返回代码
"set_to": 0 // 设置到的状态码
}
// 失败 - 密钥错误
{
"success": false, // 请求是否成功
"code": "not authorized", // 返回代码
"message": "invaild secret" // 详细信息
}
// 失败 - 请求无效
{
"success": false, // 请求是否成功
"code": "bad request", // 返回代码
"message": "argument 'status' must be a number" // 详细信息
}| 路径 | 方法 | 作用 | |
|---|---|---|---|
| Jump | /device/set |
POST |
设置单个设备的状态 (打开应用) |
/device/set?secret=<secret>&id=<id>&show_name=<show_name>&using=<using>&app_name=<app_name> |
GET |
- | |
| Jump | /device/remove?secret=<secret>&name=<device_name> |
GET |
移除单个设备的状态 |
| Jump | /device/clear?secret=<secret> |
GET |
清除所有设备的状态 |
| Jump | /device/private_mode?secret=<secret>&private=<isprivate> |
GET |
设置隐私模式 |
/device/set
设置单个设备的状态
- Method: GET / POST
Warning
使用 url params 传递参数在某些情况下 (如内容包含特殊符号) 可能导致非预期行为, 此处更建议使用 POST
/device/set?secret=<secret>&id=<id>&show_name=<show_name>&using=<using>&app_name=<app_name>
<secret>: 在config.json中配置的secret<id>: 设备标识符<show_name>: 显示名称<using>: 是否正在使用<app_name>: 正在使用应用的名称
/device/set
{
"secret": "MySecretCannotGuess", // 密钥
"id": "device-1", // 设备标识符
"show_name": "MyDevice1", // 显示名称
"using": true, // 是否正在使用
"app_name": "VSCode" // 正在使用应用的名称
}// 成功
{
"success": true,
"code": "OK"
}
// 失败 - 密钥错误
{
"success": false,
"code": "not authorized",
"message": "invaild secret"
}
// 失败 - 缺少参数
{
"success": false,
"code": "bad request",
"message": "missing param"
}
/device/remove?secret=<secret>&id=<device_id>
移除单个设备的状态
- Method: GET
<secret>: 在config.json中配置的secret<device_id>: 设备标识符
// 成功
{
"success": true,
"code": "OK"
}
// 失败 - 不存在 (也不算失败了?)
{
"success": false,
"code": "not found",
"message": "cannot find item"
}
// 失败 - 密钥错误
{
"success": false,
"code": "not authorized",
"message": "invaild secret"
}
/device/clear?secret=<secret>
清除所有设备的状态
- Method: GET
<secret>: 在config.json中配置的secret
// 成功
{
"success": true,
"code": "OK"
}
// 失败 - 密钥错误
{
"success": false,
"code": "not authorized",
"message": "invaild secret"
}
/device/private_mode?secret=<secret>&private=<isprivate>
设置隐私模式 (即在 /query 的返回中设置 device 项为空 ({}))
- Method: GET
<secret>: 在config.json中配置的secret<isprivate>: bool (仅接受true/false), 开关状态
// 成功
{
"success": true,
"code": "OK"
}
// 失败 - 密钥错误
{
"success": false,
"code": "not authorized",
"message": "invaild secret"
}
// 失败 - 请求无效
{
"success": false,
"code": "invaild request",
"message": "\"private\" arg only supports boolean type"
}| 路径 | 方法 | 作用 | |
|---|---|---|---|
| Jump | /reload_config?secret=<secret> |
GET |
重载配置 |
| Jump | /save_data?secret=<secret> |
GET |
保存内存中的状态信息 |
/reload_config?secret=<secret>
重新从 config.json 加载配置
- Method: GET
<secret>: 在config.json中配置的secret
// 成功
{
"success": true,
"code": "OK",
}
// 失败 - 密钥错误
{
"success": false,
"code": "not authorized",
"message": "invaild secret"
}
/save_data?secret=<secret>
保存内存中的状态信息到 data.json
- Method: GET
<secret>: 在config.json中配置的secret
// 成功
{
"success": true,
"code": "OK",
"data": { // data.json 内容
"status": 0,
"device_status": {},
"last_updated": "2024-12-21 13:58:38"
}
}
// 失败 - 密钥错误
{
"success": false,
"code": "not authorized",
"message": "invaild secret"
}
// 失败 - 保存出错
{
"success": false,
"code": "exception",
"message": "..." // 报错内容
}
{ "time": "2024-12-28 00:21:24", // 请求时服务端时间 "success": true, // 请求是否成功 "status": 0, // 获取到的状态码 "info": { // 对应状态码的信息 "name": "活着", // 状态名称 "desc": "目前在线,可以通过任何可用的联系方式联系本人。", // 状态描述 "color": "awake"// 状态颜色, 对应 static/style.css 中的 .sleeping .awake 等类 }, "device": { // 设备列表 "device-1": { // 标识符,唯一 "show_name": "MyDevice1", // 前台显示名称 "using": "false", // 是否正在使用 "app_name": "bilibili" // 应用名 (如 using == false 则不使用) } }, "last_updated": "2024-12-20 23:51:34", // 信息上次更新的时间 "refresh": 5000, // 刷新时间 (ms) "device_status_slice": 20 // 设备状态截取文字数 }