100 lines
2.7 KiB
Markdown
100 lines
2.7 KiB
Markdown
# shanxia2.0 后端骨架(FastAPI)
|
||
|
||
基于 FastAPI 的精简后端:**Web 鉴权**(登录 RSA、登录、刷新 Token、登出、当前用户、菜单 code)、**静态运营菜单树**、**运营端路由占位**。原山峡化工业务 API 已移除,可按模块在 `app/api/admin.py` 等位置扩展。
|
||
|
||
数据库结构与种子数据基线见:`docs/sql/zkxw.sql`(全库导出;默认账号 `admin` / `111111`,角色 `super_admin`)。
|
||
|
||
## 技术栈
|
||
|
||
- FastAPI - 现代高性能异步 Web 框架
|
||
- SQLAlchemy - ORM 数据库映射
|
||
- Pydantic - 数据验证
|
||
- JWT - 用户认证
|
||
- MySQL/PostgreSQL - 数据库
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
backend/
|
||
├── app/
|
||
│ ├── api/ # API 路由
|
||
│ │ ├── admin/ # 运营端接口
|
||
│ │ ├── supplier/ # 供应商端接口
|
||
│ │ ├── client/ # 客户端接口
|
||
│ │ └── deliver/ # 配送员端接口
|
||
│ ├── core/ # 核心配置
|
||
│ │ ├── config.py # 应用配置
|
||
│ │ ├── security.py # 安全认证
|
||
│ │ └── database.py # 数据库连接
|
||
│ ├── models/ # 数据库模型
|
||
│ ├── schemas/ # Pydantic schemas
|
||
│ ├── services/ # 业务逻辑
|
||
│ └── main.py # 应用入口
|
||
├── requirements.txt
|
||
└── README.md
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 1. 创建虚拟环境
|
||
|
||
```bash
|
||
python -m venv venv
|
||
venv\Scripts\activate # Windows
|
||
# source venv/bin/activate # Linux/Mac
|
||
```
|
||
|
||
### 2. 安装依赖
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 3. 配置环境变量
|
||
|
||
复制 `.env.example` 为 `.env` 并修改配置:
|
||
|
||
```env
|
||
# 数据库配置
|
||
DATABASE_URL=mysql+pymysql://root:password@localhost:3306/sanqiang
|
||
|
||
# JWT配置
|
||
SECRET_KEY=your-secret-key-change-in-production
|
||
ALGORITHM=HS256
|
||
ACCESS_TOKEN_EXPIRE_MINUTES=30
|
||
|
||
# 应用配置
|
||
APP_NAME=山峡化工
|
||
DEBUG=true
|
||
```
|
||
|
||
### 4. 启动服务
|
||
|
||
```bash
|
||
uvicorn app.main:app --reload --port 8000
|
||
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
|
||
|
||
```
|
||
|
||
服务启动后,访问:
|
||
- API 文档:http://127.0.0.1:8000/docs
|
||
- ReDoc 文档:http://127.0.0.1:8000/redoc
|
||
|
||
## API 路由分组
|
||
|
||
| 前缀 | 说明 | 认证方式 |
|
||
|------|------|----------|
|
||
| `/api/admin` | 运营端接口 | JWT Token |
|
||
| `/api/supplier` | 供应商端接口 | JWT Token |
|
||
| `/api/client` | 客户端接口 | JWT Token |
|
||
| `/api/deliver` | 配送员端接口 | JWT Token |
|
||
| `/api/public` | 公共接口(登录等) | 无需认证 |
|
||
|
||
## 开发规范
|
||
|
||
- 使用 Pydantic 进行数据验证
|
||
- 使用 SQLAlchemy ORM 进行数据库操作
|
||
- 所有接口遵循 RESTful 规范
|
||
- 密码使用 bcrypt 加密存储
|
||
- 使用 JWT Token 进行用户认证
|