# API接口文档
**本文引用的文件**
- [AuthController.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/controller/AuthController.java)
- [DataController.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/controller/DataController.java)
- [FileController.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/controller/FileController.java)
- [AuthService.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/service/AuthService.java)
- [DataService.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/service/DataService.java)
- [DataSaveService.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/service/DataSaveService.java)
- [FileService.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/service/FileService.java)
- [JwtUtils.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/utils/JwtUtils.java)
- [ApiResponse.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/utils/ApiResponse.java)
- [FileStorageProperties.java](file://fms-api/src/main/java/cn/g3soft/fmsapi/config/FileStorageProperties.java)
## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构总览](#架构总览)
5. [详细组件分析](#详细组件分析)
6. [依赖关系分析](#依赖关系分析)
7. [性能考虑](#性能考虑)
8. [故障排查指南](#故障排查指南)
9. [结论](#结论)
10. [附录](#附录)
## 简介
本文件为FMS系统的API接口参考文档,覆盖认证、数据与文件三大类RESTful接口。文档包含:
- 每个接口的HTTP方法、URL路径、请求参数、响应格式与错误码说明
- JWT认证流程的调用示例(登录、令牌使用)
- 元数据驱动的数据接口调用方式(动态查询、分页、批量保存、自动编码生成)
- 文件上传、下载、预览等操作的完整示例
- 版本兼容性与向后兼容性说明
## 项目结构
后端采用Spring Boot分层架构:
- 控制器层:按业务域划分(认证、数据、文件)
- 服务层:封装业务逻辑(认证、数据读写、文件存取、批量保存)
- 工具与配置:统一响应体、JWT工具、文件存储配置等
```mermaid
graph TB
subgraph "控制器"
AC["AuthController"]
DC["DataController"]
FC["FileController"]
end
subgraph "服务"
AS["AuthService"]
DS["DataService"]
DSS["DataSaveService"]
FS["FileService"]
end
subgraph "工具与配置"
JWT["JwtUtils"]
RESP["ApiResponse"]
FSP["FileStorageProperties"]
end
AC --> AS
DC --> DS
DC --> DSS
FC --> FS
AS --> JWT
FS --> FSP
AC -.-> RESP
DC -.-> RESP
FC -.-> RESP
```
图表来源
- [AuthController.java:19-55](file://fms-api/src/main/java/cn/g3soft/fmsapi/controller/AuthController.java#L19-L55)
- [DataController.java:19-94](file://fms-api/src/main/java/cn/g3soft/fmsapi/controller/DataController.java#L19-L94)
- [FileController.java:28-111](file://fms-api/src/main/java/cn/g3soft/fmsapi/controller/FileController.java#L28-L111)
- [AuthService.java:19-84](file://fms-api/src/main/java/cn/g3soft/fmsapi/service/AuthService.java#L19-L84)
- [DataService.java:17-69](file://fms-api/src/main/java/cn/g3soft/fmsapi/service/DataService.java#L17-L69)
- [DataSaveService.java:25-58](file://fms-api/src/main/java/cn/g3soft/fmsapi/service/DataSaveService.java#L25-L58)
- [FileService.java:34-118](file://fms-api/src/main/java/cn/g3soft/fmsapi/service/FileService.java#L34-L118)
- [JwtUtils.java:18-57](file://fms-api/src/main/java/cn/g3soft/fmsapi/utils/JwtUtils.java#L18-L57)
- [ApiResponse.java:1-32](file://fms-api/src/main/java/cn/g3soft/fmsapi/utils/ApiResponse.java#L1-L32)
- [FileStorageProperties.java:1-69](file://fms-api/src/main/java/cn/g3soft/fmsapi/config/FileStorageProperties.java#L1-L69)
章节来源
- [AuthController.java:19-55](file://fms-api/src/main/java/cn/g3soft/fmsapi/controller/AuthController.java#L19-L55)
- [DataController.java:19-94](file://fms-api/src/main/java/cn/g3soft/fmsapi/controller/DataController.java#L19-L94)
- [FileController.java:28-111](file://fms-api/src/main/java/cn/g3soft/fmsapi/controller/FileController.java#L28-L111)
## 核心组件
- 统一响应体 ApiResponse:提供成功/失败封装及标准错误码
- JWT工具 JwtUtils:负责令牌签发与解析
- 文件存储配置 FileStorageProperties:本地/OSS模式配置
- 各控制器与服务:实现认证、数据、文件相关能力
章节来源
- [ApiResponse.java:1-32](file://fms-api/src/main/java/cn/g3soft/fmsapi/utils/ApiResponse.java#L1-L32)
- [JwtUtils.java:18-82](file://fms-api/src/main/java/cn/g3soft/fmsapi/utils/JwtUtils.java#L18-L82)
- [FileStorageProperties.java:1-69](file://fms-api/src/main/java/cn/g3soft/fmsapi/config/FileStorageProperties.java#L1-L69)
## 架构总览
下图展示典型请求在系统中的流转路径,以“登录”和“数据分页”为例。
```mermaid
sequenceDiagram
participant C as "客户端"
participant A as "AuthController"
participant S as "AuthService"
participant J as "JwtUtils"
participant R as "ApiResponse"
C->>A : POST /auth/login {orgid, userid, password}
A->>S : login(orgid, userid, password, request)
S-->>A : Optional