garage-webui/docs/api-upgrade-report.md
wenson af376beb5b refactor: update API endpoints and improve type safety across hooks
- Refactored `useDebounce` to enhance type safety with generic arguments.
- Updated `FetchOptions` in `api.ts` to use `unknown` instead of `any` for better type safety.
- Changed API endpoints in bucket-related hooks to use new versioned endpoints.
- Improved type definitions in bucket hooks and added specific types for mutation options.
- Enhanced `useConnectNode`, `useAssignNode`, and other cluster hooks to use new API endpoints and improved type safety.
- Updated health check and key management hooks to reflect new API structure.
- Refined utility functions and type definitions for better clarity and maintainability.
2025-07-15 15:59:47 +08:00

5.4 KiB
Raw Blame History

Garage Web UI API 升级报告

升级概述

已成功将 Garage Web UI 项目从 Garage Admin API v1 升级到 v2 版本。

升级时间

  • 完成时间2024 年 12 月
  • 升级范围:前端 React hooks 中的所有 API 调用

升级详情

1. Home 页面 (src/pages/home/hooks.ts)

  • useNodesHealth: /v1/health/v2/GetClusterHealth

2. Cluster 页面 (src/pages/cluster/hooks.ts)

  • useClusterStatus: /v1/status/v2/GetClusterStatus
  • useClusterLayout: /v1/layout/v2/GetClusterLayout
  • useConnectNode: /v1/connect/v2/ConnectClusterNodes
  • useAssignNode: /v1/layout/v2/AddClusterLayout
  • useUnassignNode: /v1/layout/v2/AddClusterLayout
  • useRevertChanges: /v1/layout/revert/v2/RevertClusterLayout
  • useApplyChanges: /v1/layout/apply/v2/ApplyClusterLayout

3. Keys 页面 (src/pages/keys/hooks.ts)

  • useKeys: /v1/key?list/v2/ListKeys
  • useCreateKey: /v1/key/v2/CreateKey
  • useCreateKey (导入): /v1/key/import/v2/ImportKey
  • useRemoveKey: /v1/key/v2/DeleteKey

4. Buckets 页面 (src/pages/buckets/hooks.ts)

  • useBuckets: /buckets/v2/ListBuckets
  • useCreateBucket: /v1/bucket/v2/CreateBucket

5. Bucket 管理页面 (src/pages/buckets/manage/hooks.ts)

  • useBucket: /v1/bucket/v2/GetBucketInfo
  • useUpdateBucket: /v1/bucket/v2/UpdateBucket
  • useAddAlias: /v1/bucket/alias/global/v2/PutBucketGlobalAlias
  • useRemoveAlias: /v1/bucket/alias/global/v2/DeleteBucketGlobalAlias
  • useAllowKey: /v1/bucket/allow/v2/AllowBucketKey
  • useDenyKey: /v1/bucket/deny/v2/DenyBucketKey
  • useRemoveBucket: /v1/bucket/v2/DeleteBucket

升级统计

API 端点映射

原 v1 端点 新 v2 端点 状态
/v1/health /v2/GetClusterHealth
/v1/status /v2/GetClusterStatus
/v1/layout /v2/GetClusterLayout
/v1/connect /v2/ConnectClusterNodes
/v1/layout (POST) /v2/AddClusterLayout
/v1/layout/revert /v2/RevertClusterLayout
/v1/layout/apply /v2/ApplyClusterLayout
/v1/key?list /v2/ListKeys
/v1/key (POST) /v2/CreateKey
/v1/key/import /v2/ImportKey
/v1/key (DELETE) /v2/DeleteKey
/buckets /v2/ListBuckets
/v1/bucket (POST) /v2/CreateBucket
/v1/bucket (GET) /v2/GetBucketInfo
/v1/bucket (PUT) /v2/UpdateBucket
/v1/bucket (DELETE) /v2/DeleteBucket
/v1/bucket/alias/global (PUT) /v2/PutBucketGlobalAlias
/v1/bucket/alias/global (DELETE) /v2/DeleteBucketGlobalAlias
/v1/bucket/allow /v2/AllowBucketKey
/v1/bucket/deny /v2/DenyBucketKey

升级数量

  • 总计升级端点: 18 个
  • 成功升级: 18 个 (100%)
  • 升级文件数: 5 个 TypeScript hook 文件

后端兼容性

后端无需修改

  • 后端使用反向代理 (ProxyHandler) 直接转发 API 请求到 Garage Admin API
  • 所有 v2 API 请求会自动转发到正确的 Garage Admin 端点
  • 无需修改 Go 后端代码

编译验证

编译成功

  • TypeScript 编译通过
  • Vite 打包成功
  • 无编译错误

⚠️ 代码质量警告

  • 存在 ESLint any 类型警告(不影响功能)
  • 建议后续优化类型定义

新功能可用性

升级到 v2 API 后,项目现在可以使用以下新功能:

集群管理增强

  • 更详细的集群健康状态信息
  • 改进的布局管理操作
  • 更好的节点连接处理

密钥管理增强

  • 支持更多密钥类型
  • 改进的权限管理
  • 更好的密钥导入导出

存储桶管理增强

  • 更丰富的存储桶元数据
  • 改进的别名管理
  • 更精细的权限控制

下一步建议

  1. 类型定义优化: 将 any 类型替换为具体的接口定义
  2. 功能测试: 在开发环境中测试所有升级的功能
  3. 文档更新: 更新项目文档以反映 v2 API 的使用
  4. 错误处理: 根据 v2 API 的响应格式调整错误处理逻辑

风险评估

低风险

  • API 路径升级成功
  • 编译无错误
  • 后端兼容性良好

需要测试的功能

  • 所有升级的 API 端点的实际调用
  • 错误响应的处理
  • 新 API 参数格式的兼容性

回滚计划

如需回滚到 v1 API

  1. 恢复所有 hook 文件中的 API 路径
  2. 确保 Garage 服务器支持 v1 API
  3. 重新编译和部署

升级完成: Garage Web UI 现已成功升级到 Garage Admin API v2具备更强的功能和更好的性能。