Files
VLoop/README.md

62 lines
3.4 KiB
Markdown
Raw Normal View History

# feedsystem_video_go
2025-12-05 10:15:02 +08:00
## 项目简介
2025-12-09 16:35:49 +08:00
基于 Go 的视频 feed 系统,提供用户注册 / 登录、视频发布与点赞、Feed 拉取等接口,默认使用 Gin + GORM + MySQL。仓库附带 Postman Collection 方便调试 API。
2025-12-05 10:15:02 +08:00
## 目录结构
2025-12-09 16:35:49 +08:00
- `cmd/`:程序入口(`main.go`
- `configs/`YAML 配置(`config.yaml`
- `internal/account/`:账号实体、仓储与业务逻辑
- `internal/video/`:视频与点赞模块
- `internal/feed/`Feed 列表
- `internal/http/`HTTP 路由
- `test/`Postman Collection`account.json` 等)
- `start.sh`:启动脚本示例
2025-12-05 10:15:02 +08:00
## 快速开始
2025-12-09 16:35:49 +08:00
1. 准备 Go 1.21+ 与 MySQL 8+ 环境。
2. 创建 `feedsystem` 数据库并根据需要修改 `configs/config.yaml`
3. 安装依赖:`go mod tidy`
4. 启动服务:`go run ./cmd`(或执行 `sh start.sh`
5. 在 Postman 中导入 `test/*.json`,设置 `host=http://localhost:8080``jwt_token` 为登录返回的 token。
## 身份认证说明
- 公共接口:`/account/register``/account/login``/video/listByAuthorID``/video/getDetail``/like/getLikesCount``/feed/listLatest`
- 需要 JWT 的接口:`/account/rename``/account/changePassword``/account/findByID``/account/findByUsername``/account/logout` 以及 `/video/publish``/like/*`
- 授权头格式:`Authorization: Bearer <jwt>`
- 用户修改密码后会立即使旧 token 失效,需要重新登录获取新的 JWT。
## API账号相关
| 方法 | 路径 | 功能 | 请求体 |
|------|------|------|--------|
| POST | `/account/register` | 注册账号 | `{"username": "...","password": "..."}` |
| POST | `/account/login` | 登录,返回 `token` | `{"username": "...","password": "..."}` |
| POST | `/account/changePassword` | 修改当前登录用户的密码(需要 JWT | `{"old_password": "...","new_password": "..."}` |
| POST | `/account/rename` | 修改当前登录用户的昵称(需要 JWT | `{"new_username": "..."}` |
| POST | `/account/findByID` | 根据 ID 查询账号(需要 JWT | `{"id": 1}` |
| POST | `/account/findByUsername` | 根据用户名查询账号(需要 JWT | `{"username": "alice"}` |
| POST | `/account/logout` | 注销当前 token需要 JWT | `{}` |
- 所有接口统一使用 JSON 请求 / 响应。
- 启动时调用 `db.AutoMigrate` 保证表结构最新。
## API视频相关
| 方法 | 路径 | 功能 | 请求体 |
|------|------|------|--------|
| POST | `/video/listByAuthorID` | 根据作者 ID 获取视频列表 | `{"author_id": 1}` |
| POST | `/video/getDetail` | 查询指定视频详情 | `{"id": 1}` |
| POST | `/video/publish` | 发布视频(需要 JWT自动读取登录用户为作者 | `{"title": "...","description": "...","play_url": "http://..."}` |
## API点赞相关
| 方法 | 路径 | 功能 | 请求体 |
|------|------|------|--------|
| POST | `/like/getLikesCount` | 获取视频点赞总数 | `{"video_id": 1}` |
| POST | `/like/like` | 给视频点赞(需要 JWT | `{"video_id": 1}` |
| POST | `/like/unlike` | 取消点赞(需要 JWT | `{"video_id": 1}` |
| POST | `/like/isLiked` | 判断当前用户是否点赞(需要 JWT | `{"video_id": 1}` |
## APIFeed 相关)
| 方法 | 路径 | 功能 | 请求体 |
|------|------|------|--------|
| POST | `/feed/listLatest` | 拉取瀑布流,`limit` 最大 50`latest_time` 为空时默认当前时间 | `{"limit": 10,"latest_time": 0}` |