wms/.qoder/repowiki/zh/content/API接口文档/API接口文档.md

266 lines
12 KiB
Markdown
Raw Permalink Normal View History

# API接口文档
<cite>
**本文引用的文件**
- [AdminApplication.java](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java)
- [AuthApplication.java](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java)
- [ApiResult.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/ApiResult.java)
- [STATE.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/STATE.java)
- [Constant.java](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java)
- [BaseController.java](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/BaseController.java)
- [application.ymladmin](file://nflg-wms-admin/src/main/resources/application.yml)
- [application.ymlauth](file://nflg-wms-auth/src/main/resources/application.yml)
- [ApiMark.java](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/annotation/ApiMark.java)
- [ApiStorageTest.java](file://nflg-wms-admin/src/test/java/com/nflg/wms/admin/ApiStorageTest.java)
- [ApiServiceImpl.java](file://nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/ApiServiceImpl.java)
- [pom.xml](file://pom.xml)
</cite>
## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构总览](#架构总览)
5. [详细组件分析](#详细组件分析)
6. [依赖分析](#依赖分析)
7. [性能考虑](#性能考虑)
8. [故障排查指南](#故障排查指南)
9. [结论](#结论)
10. [附录](#附录)
## 简介
本文件为NFLG WMS系统的完整API接口文档覆盖仓储管理、物料管理、订单处理等业务域的RESTful接口设计与规范。文档基于仓库中的Spring Boot微服务架构与统一返回体、状态码体系进行整理并结合注解标记与测试用例对接口进行梳理与归档。同时提供认证与授权机制说明、错误处理策略、版本与兼容性建议、客户端集成与SDK使用指引以及Postman集合与curl示例的准备思路。
## 项目结构
系统采用多模块聚合工程,核心模块包括:
- 公共模块:统一返回体、常量、异常与工具
- 启动器模块:基础控制器基类、通用注解
- 认证模块统一认证中心SSO
- 管理模块:业务管理端服务
- 仓储模块:接口清单持久化与查询
- 网关与定时任务等其他模块
```mermaid
graph TB
subgraph "公共层"
COMMON["nflg-wms-common<br/>统一返回体/常量/异常"]
STARTER["nflg-wms-starter<br/>基础控制器/注解"]
end
subgraph "服务层"
AUTH["nflg-wms-auth<br/>认证中心(SSO)"]
ADMIN["nflg-wms-admin<br/>管理服务"]
REPO["nflg-wms-repository<br/>接口清单持久化"]
end
GATEWAY["nflg-wms-gateway<br/>网关(可选)"]
ROOT["根pom<br/>多模块聚合"]
ROOT --> COMMON
ROOT --> STARTER
ROOT --> AUTH
ROOT --> ADMIN
ROOT --> REPO
ROOT --> GATEWAY
ADMIN --> COMMON
ADMIN --> STARTER
AUTH --> COMMON
AUTH --> STARTER
REPO --> COMMON
```
图表来源
- [pom.xml:17-28](file://pom.xml#L17-L28)
- [AdminApplication.java:12-18](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L12-L18)
- [AuthApplication.java:10-14](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L10-L14)
章节来源
- [pom.xml:17-28](file://pom.xml#L17-L28)
- [application.ymladmin:1-48](file://nflg-wms-admin/src/main/resources/application.yml#L1-L48)
- [application.ymlauth:1-50](file://nflg-wms-auth/src/main/resources/application.yml#L1-L50)
## 核心组件
- 统一返回体与状态码
- 统一返回体封装了响应码、类型、消息、时间戳、追踪ID与结果数据支持分页转换与多种错误构造方式。
- 状态枚举覆盖系统错误、成功、参数错误、权限拒绝、业务异常、请求方式错误、库存不足等场景。
- 基础控制器
- 提供二维码内容生成等通用能力,便于各业务控制器复用。
- 注解与接口清单
- 使用自定义注解标记接口模块与名称,并通过测试用例扫描注册到接口清单表中,形成可维护的接口目录。
章节来源
- [ApiResult.java:16-121](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/ApiResult.java#L16-L121)
- [STATE.java:6-36](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/STATE.java#L6-L36)
- [BaseController.java:17-77](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/BaseController.java#L17-L77)
- [ApiMark.java:8-17](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/annotation/ApiMark.java#L8-L17)
- [ApiStorageTest.java:28-65](file://nflg-wms-admin/src/test/java/com/nflg/wms/admin/ApiStorageTest.java#L28-L65)
- [ApiServiceImpl.java:24-38](file://nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/ApiServiceImpl.java#L24-L38)
## 架构总览
系统采用Spring Cloud微服务架构认证中心提供统一SSO认证管理服务承载业务接口公共模块提供统一返回与常量启动器模块提供基础能力与注解仓储模块用于接口清单的持久化与查询。
```mermaid
graph TB
CLIENT["客户端/第三方系统"]
GATEWAY["网关(可选)"]
AUTH["认证中心(nflg-wms-auth)<br/>端口8101"]
ADMIN["管理服务(nflg-wms-admin)<br/>端口8102"]
COMMON["公共模块(nflg-wms-common)"]
STARTER["启动器模块(nflg-wms-starter)"]
REPO["仓储模块(nflg-wms-repository)"]
CLIENT --> GATEWAY
GATEWAY --> AUTH
GATEWAY --> ADMIN
ADMIN --> COMMON
ADMIN --> STARTER
ADMIN --> REPO
AUTH --> COMMON
AUTH --> STARTER
```
图表来源
- [AdminApplication.java:12-18](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L12-L18)
- [AuthApplication.java:10-14](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L10-L14)
- [application.ymladmin:1-48](file://nflg-wms-admin/src/main/resources/application.yml#L1-L48)
- [application.ymlauth:1-50](file://nflg-wms-auth/src/main/resources/application.yml#L1-L50)
## 详细组件分析
### 认证与授权机制
- Token与SSO
- 认证中心通过Sa-Token提供SSO能力默认Token名称为authorization超时时间为2592000秒30天Ticket超时为300秒。
- 客户端在访问受保护资源时应在请求头携带authorization字段。
- 登录扩展信息
- 登录时会附加用户名、工号、邮箱、部门ID、角色、用户类型等扩展信息便于前端与后端进行权限控制与个性化展示。
- 权限验证
- 业务接口应结合角色与菜单按钮权限进行校验,具体策略由各业务模块在控制器中实现。
章节来源
- [application.ymlauth:20-34](file://nflg-wms-auth/src/main/resources/application.yml#L20-L34)
- [Constant.java:11-22](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/Constant.java#L11-L22)
### 错误处理与统一返回体
- 统一返回体字段
- code响应码
- type响应类型
- message提示信息
- extras额外信息如错误详情
- time服务器时间
- traceId链路追踪ID
- result业务结果
- 常见状态码
- 成功200
- 参数错误101
- 信息错误102
- 操作失败103
- 没有权限104
- 用户校验失败105
- 请重新登录106
- 上传失败107
- 数据不完整无法提交或审核108
- 服务连接异常109
- 访问地址不存在110
- 请求服务异常111
- 账号异地登录112
- 页面跳转113
- 页面异常114
- 业务异常115
- 请求方式错误116
- 需要用户确认117
- 订单不存在118
- SAP错误119
- 库存不足120
章节来源
- [ApiResult.java:16-121](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/ApiResult.java#L16-L121)
- [STATE.java:6-36](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/STATE.java#L6-L36)
### 接口命名与模块化
- 接口命名规范
- 使用@ApiMark注解标注接口模块名与接口名并声明是否公开接口。
- 接口清单管理
- 通过测试用例扫描所有带@ApiMark的方法自动注册或更新接口清单便于统一管理与文档化。
章节来源
- [ApiMark.java:8-17](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/annotation/ApiMark.java#L8-L17)
- [ApiStorageTest.java:28-65](file://nflg-wms-admin/src/test/java/com/nflg/wms/admin/ApiStorageTest.java#L28-L65)
- [ApiServiceImpl.java:24-38](file://nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/ApiServiceImpl.java#L24-L38)
### 二维码打印与内容生成
- 通用二维码内容生成
- 基础控制器提供二维码内容生成方法,便于在打印、扫码等环节复用。
章节来源
- [BaseController.java:30-37](file://nflg-wms-starter/src/main/java/com/nflg/wms/starter/BaseController.java#L30-L37)
## 依赖分析
- 模块间依赖
- 管理服务与认证中心均依赖公共模块与启动器模块,确保统一的返回体、常量与注解能力。
- 接口清单服务依赖公共模块的VO与实体用于接口目录的分组与查询。
- 外部依赖
- Sa-Token用于SSO与JWTActuator用于健康检查与监控Nacos用于配置与服务发现。
```mermaid
graph LR
ADMIN["nflg-wms-admin"] --> COMMON["nflg-wms-common"]
ADMIN --> STARTER["nflg-wms-starter"]
ADMIN --> REPO["nflg-wms-repository"]
AUTH["nflg-wms-auth"] --> COMMON
AUTH --> STARTER
REPO --> COMMON
```
图表来源
- [AdminApplication.java:12-18](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L12-L18)
- [AuthApplication.java:10-14](file://nflg-wms-auth/src/main/java/com/nflg/wms/auth/AuthApplication.java#L10-L14)
- [ApiServiceImpl.java:24-38](file://nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/ApiServiceImpl.java#L24-L38)
章节来源
- [pom.xml:54-192](file://pom.xml#L54-L192)
## 性能考虑
- 并发与重试
- 管理服务启用重试与调度,有助于提升部分业务的可用性与稳定性。
- 监控与追踪
- Actuator开启健康检查与Redis数据库健康探测支持链路追踪与采样概率设置。
- 文件上传
- 管理服务配置了较大的文件与请求大小限制,满足大文件导入导出场景。
章节来源
- [AdminApplication.java:16-18](file://nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java#L16-L18)
- [application.ymladmin:24-27](file://nflg-wms-admin/src/main/resources/application.yml#L24-L27)
- [application.ymladmin:31-48](file://nflg-wms-admin/src/main/resources/application.yml#L31-L48)
## 故障排查指南
- 常见错误码定位
- 参数错误、业务异常、权限不足、请求方式错误、SAP错误、库存不足等均可通过统一返回体中的code与message快速定位。
- 追踪ID
- 返回体包含traceId可用于日志检索与问题定位。
- 登录与SSO
- 若出现“用户校验失败”或“请重新登录”检查authorization头与Token有效性确认认证中心配置与回调地址。
章节来源
- [ApiResult.java:16-24](file://nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/ApiResult.java#L16-L24)
- [STATE.java:6-36](file://nflg-wms-common/src/main/java/com/nflg/wms/common/constant/STATE.java#L6-L36)
- [application.ymlauth:20-34](file://nflg-wms-auth/src/main/resources/application.yml#L20-L34)
## 结论
本API文档基于仓库现有实现明确了统一返回体、状态码、认证授权、错误处理与接口清单管理等关键机制。建议后续补充各业务模块的具体接口定义与示例以完善端到端的API使用体验。
## 附录
### API版本管理与兼容性
- 版本策略
- 建议在URL中引入版本前缀如/v1并在服务端通过网关或路由进行版本分流。
- 向后兼容
- 新增字段采用可选策略,避免破坏既有调用;变更字段需通过新版本发布并提供迁移指引。
### 客户端集成与SDK使用
- SDK建议
- 基于统一返回体与状态码封装HTTP客户端SDK内置Token刷新、重试与日志追踪能力。
- 集成步骤
- 认证中心获取Token → 管理服务调用携带Authorization头 → 处理统一返回体与状态码。
### Postman集合与curl示例
- Postman集合
- 建议将接口清单来自接口扫描与注册导入Postman按模块分组设置全局变量如Token、环境地址
- curl示例
- 登录获取Tokencurl -X POST "{认证中心}/login" -H "Content-Type: application/json" -d '{"username":"...","password":"..."}'
- 调用受保护接口curl -X GET "{管理服务}/api/..." -H "Authorization: {token}"