Spring Boot + MySQL:为个人博客设计一套内容 API
715 字
3 分钟
Spring Boot + MySQL:为个人博客设计一套内容 API

为个人博客设计内容 API
个人博客的接口不复杂,但它是一个很好的练习场:既要考虑前台读取,又要考虑后台写入、审核和权限。
接口分层
我把接口分成两组:
/api/portal/**:匿名可读,只返回已发布内容;/api/content/**:登录后可写,按权限码校验。
两组接口共用同一套 Service 与 Mapper,差别只在查询条件与字段裁剪。这样既避免复制 SQL,也能保证前后台看到的是同一份数据。
统一返回结构
项目沿用了脚手架里的 R<T>:
{
"code": 200,
"message": "操作成功",
"data": { "rows": [], "total": 0 },
"traceId": "8f2c1a"
}
前台请求封装在 code !== 200 时抛出错误,页面只处理业务数据。追踪 ID 在排查线上问题时很有用。
评论与审核
评论默认进入待审核状态,只有 status = 1 的记录会返回给前台。审核通过或删除评论后,重新计算目标内容的评论数,避免列表和详情页数字不一致。
UPDATE blog_post
SET comment_count = (
SELECT COUNT(*) FROM blog_comment
WHERE target_type = "post" AND target_id = #{id} AND status = 1
)
WHERE id = #{id}
搜索怎么做
数据量不大时,LIKE 足够。标题、摘要和正文都可以匹配,再按发布时间排序。等文章上千篇,再考虑全文索引或独立的搜索引擎。
一点经验
不要为了“以后可能用到”而提前抽象。把文章、分类、标签、评论这四件事做扎实,比引入一套复杂的内容模型更有价值。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Spring Boot + MySQL:为个人博客设计一套内容 API
http://dzs.asia/posts/blog-content-api/相关文章智能推荐
1
用 Vue 3 重写博客前端:从 Astro 到 SPA
把静态博客改成 Vue 单页应用,同时保留原有的视觉语言。记录组件拆分、数据契约与样式复用的取舍。
2
MySQL 表结构设计:内容站的十张表
文章、分类、标签、评论、相册、友链与站点设置,一个小型内容站的数据模型可以很克制。
随机文章随机推荐













