You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
3.6 KiB
158 lines
3.6 KiB
|
4 months ago
|
# 系统API文档
|
||
|
|
|
||
|
|
## 概述
|
||
|
|
|
||
|
|
系统API提供了获取机器码和系统信息的功能,支持Windows和Linux系统,遵循项目的分层架构设计。
|
||
|
|
|
||
|
|
## API端点
|
||
|
|
|
||
|
|
### 1. 获取机器码
|
||
|
|
|
||
|
|
**端点:** `GET /api/v1/system/machine-code`
|
||
|
|
|
||
|
|
**描述:** 获取当前系统的机器码
|
||
|
|
|
||
|
|
**响应示例:**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"message": "机器码获取成功",
|
||
|
|
"data": {
|
||
|
|
"machine_code": "03000200-0400-0500-0006-000700080009",
|
||
|
|
"system_type": "windows",
|
||
|
|
"method": "wmic csproduct get uuid"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 2. 获取系统信息
|
||
|
|
|
||
|
|
**端点:** `GET /api/v1/system/info`
|
||
|
|
|
||
|
|
**描述:** 获取当前系统的详细信息
|
||
|
|
|
||
|
|
**响应示例:**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"message": "系统信息获取成功",
|
||
|
|
"data": {
|
||
|
|
"system_type": "windows",
|
||
|
|
"platform": "Windows-10-10.0.17763-SP0",
|
||
|
|
"architecture": "64bit",
|
||
|
|
"processor": "AMD64 Family 23 Model 24 Stepping 1, AuthenticAMD",
|
||
|
|
"machine_code": "03000200-0400-0500-0006-000700080009",
|
||
|
|
"python_version": "3.10.5"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3. 获取详细机器码信息
|
||
|
|
|
||
|
|
**端点:** `GET /api/v1/system/machine-code/detailed`
|
||
|
|
|
||
|
|
**描述:** 获取包含系统信息的详细机器码信息
|
||
|
|
|
||
|
|
**响应示例:**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"message": "详细机器码信息获取成功",
|
||
|
|
"data": {
|
||
|
|
"machine_code": "03000200-0400-0500-0006-000700080009",
|
||
|
|
"system_type": "windows",
|
||
|
|
"method": "wmic csproduct get uuid",
|
||
|
|
"system_info": {
|
||
|
|
"system_type": "windows",
|
||
|
|
"platform": "Windows-10-10.0.17763-SP0",
|
||
|
|
"architecture": "64bit",
|
||
|
|
"processor": "AMD64 Family 23 Model 24 Stepping 1, AuthenticAMD",
|
||
|
|
"machine_code": "03000200-0400-0500-0006-000700080009",
|
||
|
|
"python_version": "3.10.5"
|
||
|
|
},
|
||
|
|
"timestamp": "2025-08-15T15:21:54.205977"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### 4. 系统健康检查
|
||
|
|
|
||
|
|
**端点:** `GET /api/v1/system/health`
|
||
|
|
|
||
|
|
**描述:** 检查系统基本功能是否正常
|
||
|
|
|
||
|
|
**响应示例:**
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"message": "系统健康检查通过",
|
||
|
|
"data": {
|
||
|
|
"system_type": "windows",
|
||
|
|
"machine_code_available": true,
|
||
|
|
"status": "healthy"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
## 技术实现
|
||
|
|
|
||
|
|
### Windows系统
|
||
|
|
- 主要方法:`wmic csproduct get uuid`
|
||
|
|
- 备用方法:PowerShell `Get-WmiObject -Class Win32_ComputerSystemProduct`
|
||
|
|
|
||
|
|
### Linux系统
|
||
|
|
- 主要方法:`dmidecode -s system-serial-number`
|
||
|
|
- 备用方法1:读取 `/sys/class/dmi/id/product_serial`
|
||
|
|
- 备用方法2:`hostid` 命令
|
||
|
|
|
||
|
|
### 错误处理
|
||
|
|
- 命令执行超时处理
|
||
|
|
- 多种备用方案确保兼容性
|
||
|
|
- 详细的错误日志记录
|
||
|
|
|
||
|
|
## 架构设计
|
||
|
|
|
||
|
|
```
|
||
|
|
API端点层 (app/api/v1/endpoints/system.py)
|
||
|
|
↓
|
||
|
|
服务层 (app/services/system_service.py)
|
||
|
|
↓
|
||
|
|
工具层 (app/utils/system_utils.py)
|
||
|
|
↓
|
||
|
|
系统命令执行
|
||
|
|
```
|
||
|
|
|
||
|
|
## 使用示例
|
||
|
|
|
||
|
|
### Python客户端
|
||
|
|
```python
|
||
|
|
import requests
|
||
|
|
|
||
|
|
# 获取机器码
|
||
|
|
response = requests.get("http://localhost:8000/api/v1/system/machine-code")
|
||
|
|
machine_code = response.json()["data"]["machine_code"]
|
||
|
|
|
||
|
|
# 获取系统信息
|
||
|
|
response = requests.get("http://localhost:8000/api/v1/system/info")
|
||
|
|
system_info = response.json()["data"]
|
||
|
|
```
|
||
|
|
|
||
|
|
### curl命令
|
||
|
|
```bash
|
||
|
|
# 获取机器码
|
||
|
|
curl -X GET "http://localhost:8000/api/v1/system/machine-code"
|
||
|
|
|
||
|
|
# 获取系统信息
|
||
|
|
curl -X GET "http://localhost:8000/api/v1/system/info"
|
||
|
|
|
||
|
|
# 系统健康检查
|
||
|
|
curl -X GET "http://localhost:8000/api/v1/system/health"
|
||
|
|
```
|
||
|
|
|
||
|
|
## 注意事项
|
||
|
|
|
||
|
|
1. **权限要求**:某些系统命令可能需要管理员权限
|
||
|
|
2. **兼容性**:不同系统版本可能有差异,已提供多种备用方案
|
||
|
|
3. **性能**:命令执行有超时限制,避免长时间阻塞
|
||
|
|
4. **安全性**:仅获取系统标识信息,不涉及敏感数据
|