跳至主要內容

功能说明

码匠君SASSpring Authorization ServerDante Cloud微服务领域驱动DDDSpring BootSpring CloudSpring SecuritySpring Cloud AlibabaSpring Cloud TencentOAuth2.1NacosSkywalkingSentinelSeata大约 9 分钟

功能说明

对比 | Compare

一、不只是简单的 Spring Boot Starter 构建

  1. 构建统一的错误,可以返回更人性化、更易理解的错误信息,同时兼顾更详细错误信息的返回,方便开发人员理解和定位问题。
  2. 采用更易理解和使用的格式对 Minio Java SDK 参数进行重新定义。规避 Minio 默认 XML 方式参数多、不易理解使用、与前端交互不方便等问题。
  3. 隐藏 Minio Java SDK 不易理解和使用的细节,提供详实的注释说明,开发人员在使用时无需再通过翻阅 Minio 在线文档和源代码来了解各个 API 使用细节。
  4. 提供统一标准的 REST API,以及 OpenAPI Swagger3 文档描述和准确的 Spring Validation 校验,可直接集成至系统中使用。
  5. Minio Client 对象池、自定义极简 Minio Server 访问反向代理,提升
  6. 逐步丰富不同厂商 OSS 操作,作为不同 OSS 实现。
  7. 抽象统一 REST API,实现统一接口操作不同厂商 OSS。

二、标准化业务逻辑和解决方案集合

  1. 不只是上传、下载等常用方法的封装,涵盖 Minio Java SDK 支持的所有方法和操作。
  2. 选择业内最优的解决方案,实现和集成大文件分片上传、秒传、直传、断点续传等主要业务需求功能。
  3. 结合自身应用经验和需求,将 Minio API 进一步组合成符合实际应用的业务逻辑和功能处理。
  4. 采用一个基于 Vue3、Typescript5、Vite4、Pinia 2 的完整的前端项目作为集成示例,包括详细的 Typescript 类型定义以及 vue-simple-uploader 等主流组件集成和使用方法。
  5. 提供基于 Spring Authorization Server 的单体版、微服务版案例,从 SDK、Spring Boot Starter 到完整项目任你选择。

三、具体差异说明

  • [1] 基础 API 方法以及方法参数
Minio SDKDante OSS
仅包含基础操作 API提供大量重载方法
必须用构造器创建参数对象重载方法覆盖所有常见参数,按需传参即可
API 全部混在同一个类中根据差异、用途、场景拆分为不同的 Service,例如:getObject 和 downloadObject
源于 XML 对象参数结构复杂自定义实体和转换器简化参数结构
基础 API 会抛出大量 Exception,具体问题需要自己摸索对应对所有错误进行标准化处理,提供更准确和交互友好的描述信息,可方便地与系统错误体系融合
  • [2] 前后端交互
Minio SDKDante OSS
复杂结构参数不利于 JSON 互转采用最简化参数方便传输并可准确转换成对应 Minio 复杂对象参数
参数层次结构复杂自定义请求参数实体保持继承结构的同时简化传递参数
参数多用途不明晰必须查阅源代码使用 OpenAPI 注解详细说明各参数用途可使用 Swagger 查阅
参数校验规则细节多没有文档说明对照 Minio 源代码,结合自定义实体,增加匹配的 Spring Validation 校验
不提供 REST API提供标准的 REST API 可直接使用
  • [3] 业务支持
内容Minio SDKDante OSS
常规业务独立方法需要自己按需组合封装常规业务逻辑,可直接调用 REST API 使用
设置管理对于存储桶、对象的管理只能通过 Minio 服务器管理界面对照 Minio 管理界面方式,将管理功能封装为 Service、REST API 以及 Vue 管理界面
文件直传提供直传机制,直接暴露 Minio 服务器地址增加超简化反向代理,在满足直传需求的前提下,很好的隐藏 Minio 服务器以提升安全性
文件直传直传接口无法与现有系统安全体系融合(无法鉴权)提供基于 Spring Authorization Server 的、完整的单体版和微服务版案例
接口防护不提供 REST API 及 接口防护根据 REST 接口类型,默认设置幂等、防刷等接口调用防刷机制
对象池化Builder 模式创建基础 Client构建 Minio Client 和 Minio Admin 对象池模式,支持重用 Minio 基础对象来提高应用程序性能和效率
大文件分片内部机制无法直接使用封装主流大文件分片方案,提供前后端使用案例
  • [4] 前端开发
Dante OSS
只要 Minio API 支持,对应的管理功能均会在标准的 Vue3 工程中实现
提供与后端一致 Typescript 声明文件,可以直接用于基于 Typescript 的前端开发
完整的、基于 Vue3、Vite4、Typescript5 的前端项目案例,可清晰的了解 Minio 前后端交互和使用,甚至直接使用

功能 | function

  • [1] 基础功能
功能说明
Bucket 列表Bucket 列表查询,包括 Service、REST API 和前端展示
Bucket 名称是否存在Bucket 名是否存在,包括 Service、REST API 和前端异步校验处理
Bucket 创建创建 Bucket,包括 Service、REST API 和前端 Validation 校验处理
Bucket 删除删除 Bucket,包括 Service、REST API 和前端展示处理
Bucket 加密设置获取获取 Bucket Encryption 设置,包括 Service、REST API
Bucket 修改加密设置修改 Bucket Encryption 设置,包括 Service、REST API
Bucket 删除加密设置删除 Bucket Encryption 设置,包括 Service、REST API
Bucket 访问策略设置获取获取 Bucket Policy 设置,包括 Service、REST API
Bucket 修改访问策略设置修改 Bucket Policy 设置,包括 Service、REST API
Bucket 删除访问策略设置删除 Bucket Policy 设置,包括 Service、REST API
Bucket 标签获取获取 Bucket Tags,包括 Service、REST API
Bucket 修改标签修改 Bucket Tags,包括 Service、REST API
Bucket 删除标签删除 Bucket Tags,包括 Service、REST API
Bucket 对象锁定设置获取获取 Bucket ObjectLockConfiguration 设置,包括 Service、REST API
Bucket 修改对象锁定设置修改 Bucket ObjectLockConfiguration 设置,包括 Service、REST API
Bucket 删除对象锁定设置删除 Bucket ObjectLockConfiguration 设置,包括 Service、REST API
Object 列表Object 列表查询,包括 Service、REST API 和前端展示
Object 删除删除 Object,包括 Service、REST API 和前端展示处理
Object 批量删除批量删除 Object,包括 Service、REST API 和前端展示处理
Object 元信息获取获取 Object Stat,包括 Service、
Object 下载(服务端)Object 下载(服务端下载,非流模式),包括 Service、
Object 标签获取获取 Object Tags,包括 Service、REST API
Object 修改标签修改 Object Tags,包括 Service、REST API
Object 删除标签删除 Object Tags,包括 Service、REST API
Object 获取保留设置获取 Object Retention,包括 Service、REST API
Object 修改保留设置修改 Object Retention,包括 Service、REST API
Object 开启持有设置获取 Object LegalHold,包括 Service、REST API
Object 关闭持有设置修改 Object LegalHold,包括 Service、REST API
Admin User 列表User 列表查询,包括 Service、REST API
Admin User 信息获取 User 信息,包括 Service、REST API
Admin User 创建创建 User,包括 Service、REST API
Admin User 删除删除 User,包括 Service、REST API
Admin Group 列表Group 列表查询,包括 Service、REST API
Admin Group 信息获取 Group 信息,包括 Service、REST API
Admin Group 创建创建 Group,包括 Service、REST API
Admin Group 删除删除 Group,包括 Service、REST API
Admin Policy 列表Policy 列表查询,包括 Service、REST API
Admin Policy 创建创建 Policy,包括 Service、REST API
Admin Policy 删除删除 Policy,包括 Service、REST API
Admin Bucket 配额设置存储桶配额设置,包括 Service
Admin Bucket 配额获取存储桶配额获取,包括 Service
Admin Bucket 配额清除存储桶配额清除,包括 Service
其它功能正逐步完善,主要涉及前后端交互、以及可用性验证和前端相关功能的开发,敬请期待,欢迎 PR
  • [2] 扩展功能
功能说明
创建分片上传请求创建分片上传请求,返回 Minio UploadId
创建文件预上传地址根据 UploadId 和 指定的分片数量,返回数量像匹配的 Minio 与上传地址
获取所有分片文件获取指定 uploadId 下所有的分片文件
创建大文件分片上传统一的创建大文件分片上传业务逻辑封装,减少前后端反复交互, 包括 Service、REST API
合并已经上传完成的分片根据 UploadId 合并已经上传完成的分片,完成大文件分片上传 包括 Service、REST API
统一常量接口将涉及的 Enums、常量以统一接口的方式返回给前端,方便展示使用, 包括 Service、REST API 和前端展示
Minio Client 对象池实现 Minio Client 对象池,减少 Minio Client 的反复创建和销毁,提升访问 Minio Server 性能
Minio Async Client 对象池实现 Minio Async Client 对象池,减少 Minio Async Client 的反复创建和销毁,提升访问 Minio Server 性能
Minio Admin 对象池实现 Minio Admin 对象池,减少 Minio Admin 的反复创建和销毁,提升访问 Minio Server 性能
Bucket 设置统一 Bucket 设置: Bucket 标签设置、访问策略、加密方式、对象锁定、版本控制、保留设置等, 包括 Service、REST API 和前端展示
Object 设置统一 Object 设置: Bucket 标签设置, 包括 Service、REST API 和前端展示
Object 下载(流模式)Minio 对象下载,采用流模式支持 vue 前端 post 方式下载, 包括 Service、REST API 和前端展示
超轻量级反向代理实现轻量级反向代理解决 PresignedObjectUrl 方式直接向前端暴露 Minio Server 地址问题
  • [3] 主流方案
功能说明
OpenAPI 支持在支持 Open API 环境下,显示 Swagger 文档,建议使用 Springdoc
与 Spring Authorization Server 体系集成提供完整的与 Spring Authorization Server 集成,实现认证、授权、鉴权、动态权限等完整案例,包括单体版和微服务版
大文件分片上传采用 PresignedObjectUrl 方案的大文件分片上传。扩展 Minio Client,封装相应的 Service、REST API
vue-simple-uploader前端基于 vue-simple-uploader 组件,配合自定义 REST API 实现大文件分片上传