通知
列表、未读数、增量、单条已读与全部已读
路径未版本化
最后更新:2026-10-25
通知
GET /api/notices
认证:是。班级:可选。用途:通知列表,按当前班级过滤(本班 + 平台级通知)。
| 参数 | 位置 | 说明 |
|---|---|---|
unread | query | 值为 1 时只看未读;其他值/不传为全部 |
limit | query | 返回条数,服务端限制在 1–200,默认 50 |
class | query | 可选,班级 id 或 slug;不传则按当前用户班级过滤(没有班级时不过滤) |
通知对象字段:id、classId(平台级通知为 null)、type(todo/due/system)、icon(未知类型回退为 system 的图标)、title、body、link、unread、readAt、createdAt。响应 meta 含 classId 和 unread。
curl -s "$BASE/api/notices?unread=1&limit=20" \
-H "Authorization: Bearer $TOKEN"
GET /api/notices/unread
认证:是。班级:可选。用途:只取未读数,适合角标轮询。
{ "ok": true, "data": { "classId": 3, "unread": 4 } }
GET /api/notices/pending
认证:是。班级:可选。用途:后台轮询新通知;只扫描最近 20 条,返回比 since 新的通知。
| 参数 | 位置 | 说明 |
|---|---|---|
since | query | 上次看到的最大通知 id;不传/非法按 0 处理 |
{
"ok": true,
"data": {
"count": 2,
"latest": [ { "id": 102, "title": "新待办:交实验报告", "body": "时间:10-30 23:59", "link": "/todolist" } ],
"maxId": 102
},
"meta": { "classId": 3, "unread": 4 }
}
latest 最多 5 条正文;maxId 是本次扫描到的最大 id(没有任何通知时等于 since)。客户端应保存 maxId 并在下次请求时作为 since,避免重复弹出。
POST /api/notices/:id/read
认证:是。班级:可选。用途:标记单条通知已读。成功返回 {"unread": 当前未读数}。通知不存在、不属于当前用户或已经读过时返回 404。
POST /api/notices/read-all
认证:是。班级:可选(但不受班级限制)。用途:把当前用户所有未读通知标为已读。成功返回 {"marked": 标记条数, "unread": 0}。