一个前后端分离的轻量级个人博客项目,支持内容发布、互动关系、消息通知与基础管理能力,适合作为全栈练习与面试展示项目。
- 用户注册、登录、JWT 鉴权
- 文章发布、编辑、删除、分页、搜索、标签筛选
- 文章点赞、收藏
- 评论与评论点赞
- 用户关注/粉丝关系
- 站内通知与私信会话
- 管理端文章审核、下架、警告
后端:
- Java 17
- Spring Boot
- Spring Data JPA
- Spring Security
- JWT
- H2(默认本地文件数据库)
- Redis(通知计数与缓存场景)
前端:
- Vue 3(CDN + ES Module)
- JavaScript(Fetch API)
- CSS
new_blog/
├─ blog-backend/
│ ├─ pom.xml
│ └─ src/main/
│ ├─ java/com/blog/
│ │ ├─ config/
│ │ ├─ controller/
│ │ ├─ dto/
│ │ ├─ entity/
│ │ ├─ repository/
│ │ ├─ service/
│ │ └─ util/
│ └─ resources/
│ ├─ application.yml
│ └─ schema-fix.sql
├─ blog-frontend/
│ ├─ components/
│ ├─ css/
│ ├─ js/
│ └─ index.html
└─ README.md
- JDK 17+
- Maven 3.6+
- Python 3(用于本地静态服务)
- Redis(建议启动,未启用时部分能力可能受影响)
cd blog-backend
mvn spring-boot:run默认后端地址:
- Base URL: http://localhost:18080/api
- H2 Console: http://localhost:18080/api/h2-console
cd blog-frontend
python -m http.server 8000前端访问地址:
后端核心配置位于 blog-backend/src/main/resources/application.yml,当前默认项包括:
- 服务端口:
18080 - 上下文路径:
/api - 数据源:
jdbc:h2:file:./data/blogdb - JWT:通过环境变量
JWT_SECRET注入,默认占位值仅用于开发
推荐通过环境变量注入敏感配置:
jwt:
secret: ${JWT_SECRET:dev-only-change-me-in-production}
spring:
data:
redis:
password: ${REDIS_PASSWORD:}主要接口分组:
- Auth:
/api/auth/* - Articles:
/api/articles/* - Comments:
/api/comments/* - Likes/Favorites:
/api/likes/*,/api/favorites/* - Users/Follows:
/api/users/*,/api/follows/* - Notifications/Messages:
/api/notifications/* - Admin:
/api/admin/articles/*
后端启动失败:
- 先看日志中第一个
Caused by(通常是根因) - 确认 JDK/Maven 版本与 Redis 可达性
- 检查端口
18080是否被占用
前端请求失败:
- 确认后端已启动并监听
18080 - 确认请求地址包含
/api前缀 - 检查浏览器 Network/CORS 报错
MIT