通知

列表、未读数、增量、单条已读与全部已读

路径未版本化 最后更新:2026-10-25

通知

GET /api/notices

认证:是。班级:可选。用途:通知列表,按当前班级过滤(本班 + 平台级通知)。

参数位置说明
unreadquery值为 1 时只看未读;其他值/不传为全部
limitquery返回条数,服务端限制在 1–200,默认 50
classquery可选,班级 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 新的通知。

参数位置说明
sincequery上次看到的最大通知 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}。

若本文与源码不一致,以源码和实际响应为准;发现不一致时请更新文档,而不是修改 API 行为。 学生使用指南 · 返回 API 总览