docs: update API design standards
This commit is contained in:
+98
-1
@@ -461,7 +461,104 @@ http://localhost:9601/v3/api-docs # 收银服务 API 文档
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 十三、Postman / APIFox 集合规范
|
## 十三、文件存储服务(rui-service-storage)
|
||||||
|
|
||||||
|
> **服务定位**:独立微服务(9400 端口 / 聚合启动器 9399),所有业务模块共用一个上传入口,通过 `bizType` 区分业务场景。
|
||||||
|
> **前端组件**:`<RuiUpload>`([rui-frontend#5](https://git.dev.vifo.cc/rui/rui-frontend/issues/5))。
|
||||||
|
|
||||||
|
### 13.1 上传文件
|
||||||
|
|
||||||
|
```
|
||||||
|
POST /storage/upload
|
||||||
|
Content-Type: multipart/form-data
|
||||||
|
```
|
||||||
|
|
||||||
|
**表单参数**
|
||||||
|
|
||||||
|
| 参数 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| `file` | File | ✅ | 文件本体 |
|
||||||
|
| `bizType` | string | ✅ | 业务类型,匹配 `^[A-Z][A-Z0-9_]{0,50}$` |
|
||||||
|
| `storage` | string | ❌ | `aliyun` / `tencent` / `local`;不传走默认 |
|
||||||
|
| `fileName` | string | ❌ | 固定存储名,匹配 `^[A-Za-z0-9][A-Za-z0-9._-]{0,199}$` |
|
||||||
|
| `extract` | bool | ❌ | `true` 时若为 .zip 自动解压为多文件入库 |
|
||||||
|
|
||||||
|
**响应**:`data: SysFileUploadVO[]`(**统一为数组**,单文件上传也是长度 1)。
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"code": 0,
|
||||||
|
"message": "ok",
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"id": 1234567890,
|
||||||
|
"name": "abc123.jpg",
|
||||||
|
"originalName": "photo.jpg",
|
||||||
|
"path": "user-avatar/2026/06/abc123.jpg",
|
||||||
|
"url": "https://bucket.oss-cn-shanghai.aliyuncs.com/user-avatar/2026/06/abc123.jpg",
|
||||||
|
"size": 12345,
|
||||||
|
"contentType": "image/jpeg",
|
||||||
|
"storageType": "ALIYUN",
|
||||||
|
"bizType": "USER_AVATAR"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 13.2 查询文件详情
|
||||||
|
|
||||||
|
```
|
||||||
|
GET /storage/file/{id}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 13.3 分页查询
|
||||||
|
|
||||||
|
```
|
||||||
|
GET /storage/file/page?pageNum=1&pageSize=20&bizType=SYS_APP_CERT
|
||||||
|
```
|
||||||
|
|
||||||
|
### 13.4 删除文件
|
||||||
|
|
||||||
|
```
|
||||||
|
DELETE /storage/file/{id}
|
||||||
|
```
|
||||||
|
|
||||||
|
物理删除对象存储文件 + 软删 `sys_file` 记录。
|
||||||
|
|
||||||
|
### 13.5 已知 bizType
|
||||||
|
|
||||||
|
| bizType | 限制 | 用途 |
|
||||||
|
|---------|------|------|
|
||||||
|
| `COMMON` | 10MB | 通用 |
|
||||||
|
| `SYS_APP_CERT` | 5MB / pem,crt,key,p12 | 第三方应用证书 |
|
||||||
|
| `USER_AVATAR` | 2MB / jpg,jpeg,png,webp | 用户头像 |
|
||||||
|
| `CMS_BANNER` | 5MB / jpg,jpeg,png,webp,gif | CMS 轮播图 |
|
||||||
|
|
||||||
|
新业务模块直接传新字符串(如 `ORDER_PROOF`),后端 yml 配 `rui.file.biz-types.<新>.max-size` / `allowed-extensions` 即可,**前端不需要等后端发版**。
|
||||||
|
|
||||||
|
### 13.6 前端使用示例
|
||||||
|
|
||||||
|
```vue
|
||||||
|
<script setup>
|
||||||
|
import RuiUpload from '@/components/RuiUpload/RuiUpload.vue'
|
||||||
|
import type { UploadResult } from '@/service/system/storageService'
|
||||||
|
const certFiles = ref<UploadResult[]>([])
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<RuiUpload
|
||||||
|
v-model="certFiles"
|
||||||
|
biz-type="SYS_APP_CERT"
|
||||||
|
:max-size="20"
|
||||||
|
accept=".pem,.crt,.key,.p12,.zip"
|
||||||
|
:extract="false"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 十四、Postman / APIFox 集合规范
|
||||||
|
|
||||||
### 13.1 目录结构
|
### 13.1 目录结构
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user