Vibe Music Server:Go 语言构建高性能音乐后端,JWT 认证 + MinIO 流媒体
标签: Go / Gin / 音乐服务 / 后端 / 开源 / PostgreSQL / Redis / MinIO / JWT / RESTful API
原文: 微信公众号「码农先森」https://mp.weixin.qq.com/s/LyuvMRluAcFfYWI5ICW98g
GitHub: https://github.com/kingleonardo999/Vibe-Music-server
一句话定位
Vibe Music Server 是一个使用 Go 语言构建的高性能音乐后端服务,提供 RESTful API 支持音乐播放、用户管理、播放列表、评论收藏等完整功能。技术栈:Go + Gin + PostgreSQL + Redis + MinIO + JWT。
功能特性
| 功能 | 说明 |
|---|---|
| 🔐 用户认证 | 安全的用户注册和登录(JWT) |
| 🎵 音乐库管理 | 管理歌曲、歌手和专辑信息 |
| 🎶 播放列表 | 创建、查看、更新和删除个人播放列表 |
| 🎧 音乐流 | 高效的音乐文件流式传输(MinIO) |
| 🔍 搜索 | 按歌曲、歌手或专辑进行搜索 |
| ❤️ 收藏 | 收藏歌曲和歌单 |
| 💬 评论 | 歌曲/歌单评论 + 点赞 |
| 📧 邮件服务 | SMTP 邮件通知 |
技术栈
| 组件 | 技术 |
|---|---|
| 语言 | Go 1.18+ |
| Web 框架 | Gin |
| 数据库 | PostgreSQL |
| ORM | GORM |
| 缓存 | Redis |
| 对象存储 | MinIO(音乐文件流式传输) |
| 配置 | Viper |
| 认证 | JWT |
环境准备
- Go 1.18+
- PostgreSQL
- Redis
- MinIO(可选,用于音乐文件存储)
- Docker(可选,用于快速启动数据库)
安装与运行
1. 克隆仓库
git clone https://github.com/kingleonardo999/Vibe-Music-server.git
cd Vibe-Music-server
2. 安装依赖
go mod tidy
3. 配置文件
项目使用 config/templateConfig.yml 作为配置模板。建议在 config/ 目录下创建 config.yml 覆盖默认配置。
# config/config.yml
# 数据库配置
database:
host: 127.0.0.1
port: 3306
name: vibe_music
username: root
password: YOUR_DB_PASSWORD
# Redis 配置
redis:
host: 127.0.0.1
port: 6379
password: YOUR_REDIS_PASSWORD
# MinIO 对象存储(音乐文件)
minio:
endpoint: http://127.0.0.1:9090
accessKey: minioadmin
secretKey: minioadmin
bucket: vibe-music
# 邮件服务
mail:
host: YOUR_SMTP_HOST
port: 465
user: YOUR_EMAIL_ADDRESS
password: YOUR_EMAIL_PASSWORD
# JWT 密钥
jwt:
secret: YOUR_VERY_SECRET_JWT_KEY
注意:config.yml 已添加到 .gitignore,避免敏感信息提交到版本控制。
4. 运行数据库迁移
go run ./cmd/migrate
5. 启动服务
go run ./cmd/server/main.go
服务器将在 http://localhost:8080 运行。
API 端点
用户 (/user)
| 方法 | 端点 | 说明 |
|---|---|---|
| POST | /user/register | 注册新用户 |
| POST | /user/login | 用户登录 |
| GET | /user/getUserInfo | 获取当前用户信息(需认证) |
| PUT | /user/updateUserInfo | 更新用户信息(需认证) |
歌曲 (/song)
| 方法 | 端点 | 说明 |
|---|---|---|
| POST | /song/getAllSongs | 获取歌曲列表(支持分页和搜索) |
| GET | /song/getRecommendedSongs | 获取推荐歌曲 |
| GET | /song/getSongDetail/{id} | 获取单首歌曲详情 |
歌手 (/artist)
| 方法 | 端点 | 说明 |
|---|---|---|
| POST | /artist/getAllArtists | 获取歌手列表(支持分页和搜索) |
| GET | /artist/getRandomArtists | 获取随机歌手 |
| GET | /artist/getArtistDetail/{id} | 获取歌手详情及其歌曲 |
歌单 (/playlist)
| 方法 | 端点 | 说明 |
|---|---|---|
| POST | /playlist/getAllPlaylists | 获取歌单列表(支持分页和搜索) |
| GET | /playlist/getRecommendedPlaylists | 获取推荐歌单 |
| GET | /playlist/getPlaylistDetail/{id} | 获取歌单详情 |
收藏 (/favorite)
| 方法 | 端点 | 说明 |
|---|---|---|
| POST | /favorite/collectSong | 收藏歌曲(需认证) |
| DELETE | /favorite/cancelCollectSong | 取消收藏歌曲(需认证) |
| POST | /favorite/getFavoriteSongs | 获取收藏的歌曲列表(需认证) |
| POST | /favorite/collectPlaylist | 收藏歌单(需认证) |
| DELETE | /favorite/cancelCollectPlaylist | 取消收藏歌单(需认证) |
| POST | /favorite/getFavoritePlaylists | 获取收藏的歌单列表(需认证) |
评论 (/comment)
| 方法 | 端点 | 说明 |
|---|---|---|
| POST | /comment/addSongComment | 新增歌曲评论(需认证) |
| POST | /comment/addPlaylistComment | 新增歌单评论(需认证) |
| PATCH | /comment/likeComment/{id} | 点赞评论(需认证) |
架构亮点
1. 音乐流式传输
使用 MinIO 对象存储托管音乐文件,支持高效流式传输,适合大文件场景。
2. 配置管理
Viper + YAML 配置,支持多环境覆盖,敏感信息与代码分离。
3. JWT 认证
无状态认证,适合分布式部署,Token 自带用户信息。
4. GORM 自动迁移
数据库 Schema 自动同步,开发迭代快。
项目结构
Vibe-Music-server/
├── cmd/
│ ├── server/
│ │ └── main.go # 入口文件
│ └── migrate/ # 数据库迁移
├── config/
│ ├── templateConfig.yml # 配置模板
│ └── config.yml # 本地配置(.gitignore)
├── internal/
│ ├── handler/ # HTTP 处理器
│ ├── service/ # 业务逻辑
│ ├── repository/ # 数据访问层
│ ├── model/ # 数据模型
│ └── middleware/ # 中间件(JWT、CORS 等)
├── pkg/
│ ├── jwt/ # JWT 工具
│ ├── minio/ # MinIO 客户端
│ └── redis/ # Redis 客户端
└── go.mod
适合谁用?
- 🎵 音乐应用开发者:需要一个现成的后端服务
- 🧑💻 Go 学习者:学习 Gin + GORM + JWT 项目架构
- 🏗️ 自建音乐服务:搭建私人音乐库
- 📚 API 设计参考:RESTful API 最佳实践
总结
Vibe Music Server 是一个结构清晰、功能完整的音乐后端服务。Go + Gin + PostgreSQL + Redis + MinIO 的组合覆盖了音乐应用的核心需求:用户认证、音乐库管理、播放列表、流式传输、收藏评论。
如果你正在开发音乐类应用,或者想学习 Go Web 项目的工程化实践,这个项目是一个不错的参考起点。
相关链接
- GitHub: https://github.com/kingleonardo999/Vibe-Music-server
- 原文: https://mp.weixin.qq.com/s/LyuvMRluAcFfYWI5ICW98g
Keywords: Vibe Music Server, Go, Gin, 音乐后端, PostgreSQL, Redis, MinIO, JWT, RESTful API, 开源项目, GORM, Viper