# Geeker-Admin-JS-Fastapi
**Repository Path**: ge-yaliang/geeker-admin-js-fastapi
## Basic Information
- **Project Name**: Geeker-Admin-JS-Fastapi
- **Description**: 项目名称:Geeker-Admin 后端管理系统。
项目描述:这是一个基于 FastAPI 的后端管理系统,旨在为前端提供强大的 API 支持。系统包括用户管理、权限管理、数据导出等功能,并且支持 JWT 认证和跨域请求(CORS)。
- **Primary Language**: Python
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 1
- **Created**: 2025-02-16
- **Last Updated**: 2025-05-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Geeker-Admin-JS-Fastapi
## 介绍
项目名称:Geeker-Admin Fastapi后端管理系统。
项目描述:
这是一个基于 FastAPI 的后端管理系统,旨在为 Geeker-Admin-JS 提供 API 支持。
系统包括用户管理、数据导出等功能,并且支持 JWT 认证和跨域请求(CORS)。
## 软件架构
### 概述
- Geeker-Admin 后端管理系统采用分层架构设计,主要包括以下几个层次:
- 表现层(Presentation Layer):
- FastAPI:作为主要的 Web 框架,处理 HTTP 请求和响应。
- FastAPI-Static-Files:用于处理静态文件,如 CSS、JavaScript 和图片等。
- 业务逻辑层(Business Logic Layer):
- 路由(Routers):定义 API 端点,处理业务逻辑。
- 依赖注入(Dependencies):管理数据库会话、认证等依赖项。
- 中间件(Middleware):处理跨域请求(CORS)、日志记录等。
- 数据访问层(Data Access Layer):
- SQLModel:用于定义数据库模型和与数据库交互。
- SQLAlchemy:作为 ORM 工具,管理数据库连接和操作。
- PyMySQL:用于连接 MySQL 数据库。
- 安全层(Security Layer):
- JWT 认证:使用 PyJWT 处理 JWT 令牌,确保用户认证和授权。
- 密码哈希:使用 Passlib 和 bcrypt 算法进行密码哈希和验证。
- 工具层(Utility Layer):
- 配置管理:使用 python-dotenv 加载环境变量。
- 响应工具:使用 response_utils.py 创建标准化的响应字典。
- 验证工具:使用 validate_utils.py 进行数据验证。
- 文本工具:使用 txt_utils.py 读取配置文件。
## 安装教程
### 1.环境要求
- Python 版本 3.12
### 2.安装依赖
```bash
pip install fastapi uvicorn
pip install python-multipart pyjwt sqlmodel pymysql passlib==1.7.4 bcrypt==4.0.1 python-dotenv fastapi-static-files pandas openpyxl pydantic-settings
```
### 3.配置环境变量
- 需要改 `config.env` 里面的 `SECRET_KEY`,让 AI 帮你算一个 HS256 的密钥覆盖里面就行了。
- `EXPIRE` 是 token 有效期。
- `ALGORITHM` 是密钥算法。
## 使用说明
### 1.启动后端
- **方式一:在 PyCharm 中直接运行 `main.py`**
```python
# 在这个 if 左侧有个绿色的播放箭头,点一下就运行了
if name == "main":
import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=6061, reload=True)
```
- **方式二:使用命令行启动**
```bash
uvicorn main:app --host 0.0.0.0 --port 6061 --reload
```
- **测试接口**
- 启动后进入这个网址测试 [http://127.0.0.1:6061/docs](http://127.0.0.1:6061/docs)
### 2.匹配前端
- **配套前端**
- [前端:海马傻了/Geeker-Admin-JS](https://gitee.com/haimashale/geeker-admin-js)
- **前端代码修改**
```javascript
// src/api/modules/login.js
export const getAuthMenuListApi = () => {
return authMenuList;
};
export const getAuthButtonListApi = () => {
return authButtonList;
};
// src/views/login/components/LoginForm.vue
const { data } = await loginApi({ ...loginForm, password: md5(loginForm.password) });
// 去掉MD5加密,因为后端本身已经进行了加密。如果保留MD5,后端使用bcrypt和MD5结合时会导致错误。
const { data } = await loginApi({ ...loginForm, password: loginForm.password });
```
- **账号管理界面**
文件位置:src/views/system/accountManage/index.vue 直接粘贴以下代码
```vue
新增用户
批量添加用户
导出用户数据
批量删除用户
{{ scope.row }}
{{ scope.column.createTime }}
查看
编辑
重置密码
删除
```
## 依赖解释
```text
python-multipart:
用于处理表单数据和文件上传。
示例用途:处理 Form 和 File 类型的数据。
pyjwt[crypto]:
用于处理 JWT 令牌,包括加密支持。
[crypto] 选项确保安装加密支持,这对于生成和验证带有加密签名的 JWT 令牌是必要的。
示例用途:生成和验证 JWT 令牌。
sqlmodel:
用于定义数据库模型和与数据库交互。
示例用途:定义 SQL 模型和创建数据库表。
pymysql:
用于连接 MySQL 数据库。
示例用途:创建 SQLAlchemy 引擎并连接到 MySQL 数据库。
passlib[bcrypt]:
用于密码哈希和验证,特别是使用 bcrypt 算法。
[bcrypt] 选项确保安装 bcrypt 支持。
示例用途:哈希和验证用户密码。
python-dotenv:
用于加载环境变量 - .env文件。
fastapi-static-files:
用于处理静态文件,如 CSS、JavaScript 和图片等。
pandas:
用于处理数据,如读取和写入 Excel 文件。(适用于小文件,不支持断点续传)
openpyxl:
用于处理 Excel 文件。
pydantic-settings:
用于处理配置文件,如读取和写入配置文件。
```