① 首页 — 三区块一屏讲完项目能干什么
调用:GET /api/banner/list、GET /api/category/list、GET /api/article/recommend?limit=6 —— 三请求无依赖,用 Promise.all 并发(flow.html 第 8 步)。
② 赏文学 · 作品列表 — 筛选 / 搜索 / 排序 / 分页四件套
调用:GET /api/article/list。筛选 / 关键字 / 排序 / 页码全是 query 参数;筛选一变自动回第 1 页(watch 分页参数);分页器用 v-model:current-page 组件双绑。
③ 作品详情 — 内容 + 互动(书评 / 点赞 / 收藏)都在这一页
调用:GET /api/article/detail/<id>(带 token 会回填 is_liked / is_favorite)、GET /api/comment/list、POST /api/comment/add ★、POST /api/article/like ★、POST /api/favorite/toggle ★。每次打开详情,后端自动浏览量 +1。
④ 登录 / 注册 — 同一个卡片两个 Tab
调用:POST /api/user/register、POST /api/user/login。两个 Tab 切同一张卡片;校验交给 el-form :rules;成功后 token 进 Pinia + localStorage,并按 ?redirect= 跳回被拦截前的页面。
⑤ 个人中心 — 资料 + 统计 + 我的收藏
调用:GET /api/user/profile ★(含书评 / 收藏统计)、PUT /api/user/profile ★、GET /api/favorite/list ★、POST /api/user/avatar ★。未登录访问会被路由守卫拦到登录页。