Kamixitong/docs/FASTAPI.md

293 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# FastAPI接口配置文档
本文档介绍了如何使用和配置KaMiXiTong系统的FastAPI接口该接口提供了现代化的API和自动生成的交互式文档。
## 目录
1. [简介](#简介)
2. [安装依赖](#安装依赖)
3. [启动FastAPI服务](#启动fastapi服务)
4. [API接口说明](#api接口说明)
- [API管理接口](#api管理接口)
- [API密钥接口](#api密钥接口)
- [API版本接口](#api版本接口)
5. [访问API文档](#访问api文档)
6. [调试示例](#调试示例)
## 简介
FastAPI接口是KaMiXiTong系统的一个补充接口提供了以下优势
- 自动生成交互式API文档
- 更快的接口响应速度
- 更好的数据验证和错误处理
- 支持异步操作
- 与现有Flask应用并行运行
## 安装依赖
在运行FastAPI接口之前需要安装额外的依赖包
```bash
pip install fastapi uvicorn python-multipart
```
或者使用requirements-fastapi.txt文件
```bash
pip install -r requirements-fastapi.txt
```
## 启动FastAPI服务
使用以下命令启动FastAPI服务
```bash
python fastapi_app.py
```
默认情况下,服务将在以下地址运行:
- 地址: http://localhost:8000
- API文档: http://localhost:8000/docs
- ReDoc文档: http://localhost:8000/redoc
如果端口被占用,可以修改端口号:
```bash
python fastapi_app.py --port 9000
```
您也可以使用uvicorn直接启动
```bash
uvicorn fastapi_app:app --host 127.0.0.1 --port 9000 --reload
```
## API接口说明
### API管理接口
#### 获取API列表
- **URL**: `GET /apis`
- **参数**:
- `skip`: 跳过的记录数默认为0
- `limit`: 返回记录数默认为100
- **响应**: API对象列表
#### 创建API
- **URL**: `POST /apis`
- **请求体**:
```json
{
"api_name": "示例API",
"description": "这是一个示例API",
"status": 1
}
```
- **响应**: 创建的API对象
#### 获取API详情
- **URL**: `GET /apis/{api_id}`
- **参数**: `api_id` - API的唯一标识符
- **响应**: API对象
#### 更新API
- **URL**: `PUT /apis/{api_id}`
- **参数**: `api_id` - API的唯一标识符
- **请求体**:
```json
{
"api_name": "更新后的API名称",
"description": "更新后的描述",
"status": 1
}
```
- **响应**: 更新后的API对象
#### 删除API
- **URL**: `DELETE /apis/{api_id}`
- **参数**: `api_id` - API的唯一标识符
- **响应**: 删除结果
### API密钥接口
#### 获取API密钥列表
- **URL**: `GET /api_keys`
- **参数**:
- `skip`: 跳过的记录数默认为0
- `limit`: 返回记录数默认为100
- **响应**: API密钥对象列表
#### 生成API密钥
- **URL**: `POST /api_keys`
- **请求体**:
```json
{
"name": "示例密钥",
"api_id": "API_12345678",
"description": "这是一个示例密钥",
"status": 1,
"expire_time": "2025-12-31T23:59:59"
}
```
- **响应**: 创建的API密钥对象
#### 获取API密钥详情
- **URL**: `GET /api_keys/{key_id}`
- **参数**: `key_id` - API密钥的唯一标识符
- **响应**: API密钥对象
#### 更新API密钥
- **URL**: `PUT /api_keys/{key_id}`
- **参数**: `key_id` - API密钥的唯一标识符
- **请求体**:
```json
{
"name": "更新后的密钥名称",
"api_id": "API_87654321",
"description": "更新后的描述",
"status": 1,
"expire_time": "2026-12-31T23:59:59"
}
```
- **响应**: 更新后的API密钥对象
#### 删除API密钥
- **URL**: `DELETE /api_keys/{key_id}`
- **参数**: `key_id` - API密钥的唯一标识符
- **响应**: 删除结果
### API版本接口
#### 获取API版本列表
- **URL**: `GET /api_versions`
- **参数**:
- `skip`: 跳过的记录数默认为0
- `limit`: 返回记录数默认为100
- **响应**: API版本对象列表
#### 创建API版本
- **URL**: `POST /api_versions`
- **请求体**:
```json
{
"version_num": "v1.0.0",
"api_id": "API_12345678",
"description": "初始版本",
"publish_status": 1
}
```
- **响应**: 创建的API版本对象
#### 获取API版本详情
- **URL**: `GET /api_versions/{version_id}`
- **参数**: `version_id` - API版本的唯一标识符
- **响应**: API版本对象
#### 更新API版本
- **URL**: `PUT /api_versions/{version_id}`
- **参数**: `version_id` - API版本的唯一标识符
- **请求体**:
```json
{
"version_num": "v1.0.1",
"api_id": "API_12345678",
"description": "修复了一些问题",
"publish_status": 1
}
```
- **响应**: 更新后的API版本对象
#### 删除API版本
- **URL**: `DELETE /api_versions/{version_id}`
- **参数**: `version_id` - API版本的唯一标识符
- **响应**: 删除结果
## 访问API文档
FastAPI提供了自动生成的交互式API文档
1. **Swagger UI**: 访问 `http://localhost:9000/docs`
- 提供交互式的API测试界面
- 可以直接在浏览器中测试API接口
- 显示详细的接口参数和响应格式
2. **ReDoc**: 访问 `http://localhost:9000/redoc`
- 提供更简洁的API文档视图
- 适合阅读和分享
## 调试示例
### 使用curl测试API
```bash
# 获取API列表
curl -X GET "http://localhost:9000/apis" -H "accept: application/json"
# 创建API
curl -X POST "http://localhost:9000/apis" \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d '{"api_name":"测试API","description":"用于测试的API","status":1}'
# 获取特定API
curl -X GET "http://localhost:9000/apis/API_12345678" -H "accept: application/json"
```
在Windows PowerShell中可以使用以下命令
```powershell
# 获取根路径信息
powershell -Command "Invoke-WebRequest -Uri 'http://127.0.0.1:9000/' -Method GET"
# 获取API列表
powershell -Command "Invoke-WebRequest -Uri 'http://127.0.0.1:9000/apis' -Method GET"
```
### 使用Python requests测试API
```python
import requests
# 基础URL
BASE_URL = "http://localhost:9000"
# 获取根路径信息
response = requests.get(f"{BASE_URL}/")
print("根路径信息:", response.json())
# 获取API列表
response = requests.get(f"{BASE_URL}/apis")
print("获取API列表:", response.json())
# 创建API
api_data = {
"api_name": "测试API",
"description": "用于测试的API",
"status": 1
}
response = requests.post(f"{BASE_URL}/apis", json=api_data)
print("创建API:", response.json())
# 获取特定API
api_id = response.json()["api_id"]
response = requests.get(f"{BASE_URL}/apis/{api_id}")
print("获取API详情:", response.json())
```
### 在Swagger UI中测试
1. 打开浏览器访问 `http://localhost:9000/docs`
2. 展开相应的API接口
3. 点击"Try it out"按钮
4. 输入必要的参数
5. 点击"Execute"按钮执行请求
6. 查看响应结果
## 注意事项
1. FastAPI接口与Flask应用共享同一个数据库因此数据是一致的
2. 两个应用可以同时运行,分别监听不同的端口
3. 建议在生产环境中使用反向代理如Nginx统一对外提供服务
4. 可以根据需要调整端口号和绑定地址
5. 如果遇到端口占用问题,可以修改启动命令中的端口号