Files
go_blog/TODO_API_REFACTOR.md
T

3.0 KiB
Raw Blame History

API 化改造 Todo

操作接口改为 /api/ 前缀的 JSON APIPOST/PUT/DELETE、码+文案错误响应),页面路由保持不变。

基建(high

  • 1. 新建 handlers/api.goAPIError(c, status, trKey)APIOK(c, redirect, data)、JSON 绑定/解析 helper
  • 2. middleware/auth.goAuthRequired/AdminRequired/api 路径前缀分支 401/403 JSON(非 API 保持 302
  • 3. main.go:注册 /api 分组(auth/article/admin/profile/my 子组)+ gin 静态/参数路由冲突冒烟测试(新增 TestRegisterRoutesSmoke,含附件端点搬移,LoginRateLimiter 导出)
  • 4. templates/layouts/base.html:增加 blogAPI/blogForm/blogShowError 共享 fetch 助手(CSRF 头、e.submitter 状态按钮、bool 复选框转换)

零行为搬移(medium

  • 5. 附件三件套(admin/my+ /api/profile/avatar 换注册路径(路由已在基建 commit 搬移)
  • 6. 搬移端点模板更新:article_create.html 3 处 fetch URL、profile.html 1 处(删除改用 DELETE

功能改造(medium

  • 7. 认证 APIauth.go Login/Register/Logout JSON 化(429 限流、会话轮换保留)
  • 8. 认证模板:login.html/register.html 改 fetch + 错误 div idbase.html logout 改 fetchlogout-form 全局委托)
  • 9. 评论 APIcomment.go PostComment JSON 化(校验码复用 i18n 键)
  • 10. 评论 APIadmin_comment.go approve/reject/delete JSON 化
  • 11. 评论模板:article.html 评论表单 fetch、comment_list.html 操作后 reload
  • 12. 文章 CRUD APIarticle.go/my_articles.go 去 renderForm/Redirect 改 JSON(表单字段加 json tag
  • 13. 文章模板:article_create.html/my_article_form.html/article_list.html/my_articles.html 改 fetcheasyMDE.value()e.submitter
  • 14. 用户 APIadmin_user.go UserCreate/Update/Delete JSON 化(自防/最后管理员拦截改 403)
  • 15. 用户模板:user_form.html/user_list.html 改 fetch
  • 16. 设置 APIsettings.go 5 组 save JSON 化;site favicon/logo 拆出 POST /api/admin/settings/site/favicon|logo
  • 17. 设置模板:settings_site/settings_navlinks/settings_upload/settings_download/settings_comment 5 页改 fetchblogSettingsForm 委托)
  • 18. 个人资料 APIprofile.go UpdateProfile JSON 化(头像走 /api/profile/avatar
  • 19. 个人资料模板:profile.html 文本表单改 fetch

测试与收尾(high

  • 20. 新增 handlers/api_test.gohappy path / 校验码 / 401 / 403 / CSRF 头 / 429 / 409
  • 21. 更新 security_test.go/p2_validation_test.go/p3_upload_test.go/session_upload_security_test.go 到新 URL 与 JSON 断言
  • 22. go build/vet/test ./...(含 -count=1 -race)全绿;README 路由表同步

执行说明

  • 每步只改路由/响应层,不动解析校验逻辑(JSON binding 替换 PostForm 读取),单步可编译可测
  • 并发状态:单一编辑者(本会话从第 1 项开始逐步执行)