本项目是校园系统的FastAPI后端服务,实现了微信小程序登录、用户绑定、歌曲搜索、点歌、管理员审核、歌曲播放等全流程功能,集成网易云音乐播放直链获取。
- Web框架: FastAPI
- ORM: SQLAlchemy
- 数据库: PostgreSQL
- 身份验证: JWT
- API集成: node.js网易云音乐API
ourapp_back/
├── app/ # 应用主目录
│ ├── api/ # 所有API路由的定义处
│ ├── core/
│ │ ├── config.py # 应用配置
│ │ └── security.py # 安全相关工具
│ ├── db/ # 数据库相关
│ │ ├── models/ # 数据模型
│ │ ├── repositories/ # 数据访问层
│ │ └── session.py # 数据库会话
│ ├── schemas/ # 请求/响应模式
│ ├── services/ # 业务逻辑服务
│ └── main.py # 应用入口
├── database.db # SQLite数据库文件
├── requirements.txt # 依赖包列表
├── migrate.py # 数据库迁移脚本
└── run.py # 启动脚本
- 登录: 通过微信小程序code换取openid并生成JWT令牌
- 绑定: 将微信用户与学生信息绑定
- 刷新令牌: 支持访问令牌过期后使用刷新令牌获取新令牌
- 点歌: 用户提交点歌请求
- 审核: 审核点歌请求(管理员权限)
- 队列管理: 获取待播放歌曲队列
- 状态更新: 标记歌曲播放状态
- 歌曲搜索: 搜索网易云音乐歌曲
- 获取直链: 获取歌曲播放地址
- 获取歌词: 获取歌曲歌词
确保已安装Python 3.13。你可以使用poetry来搭建环境。
pip install -r requirements.txtor
poetry install你可以这样创建JWT_SECRET:
python -c "import secrets; print(secrets.token_urlsafe(32))"在项目根目录创建.env文件:
# JWT配置(必须至少32字节,否则启动时会报错)
JWT_SECRET=your_secure_jwt_secret_key_here_must_be_at_least_32_characters_long
# 微信小程序配置
WECHAT_APPID=your_wechat_appid
WECHAT_SECRET=your_wechat_secret
# 数据库配置(如使用PostgreSQL)
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=miniapp使用以下命令初始化数据库:
# 导入初始数据
python migrate.py当开发时需要删除数据库原来的数据并重新创建时,可以使用
python migrate.py --delete先启动node.js网易云音乐API服务,参考网易云音乐API项目
npx NeteaseCloudMusicApi@latest# 使用run.py启动
python run.py服务启动后,可访问 http://localhost:8000/docs 查看API文档。