Skip to content

API 契约与版本兼容性

本文档定义 youlai-admin 的 API 契约规范,以及各后端实现的差异说明。

核心原则

版本化

v{主版本}.{次版本}.{修订版本}
  • 主版本:不兼容的变更(删除字段、改变语义)
  • 次版本:向后兼容的新增(新增可选字段)
  • 修订版本:Bug 修复

向后兼容

允许:新增可选字段、新增枚举值、新增接口 禁止:删除必需字段、改变字段类型、修改必填规则

统一响应格式

json
{ "code": "00000", "message": "成功", "data": {} }

详见 API 快速开始

各后端差异

维度JavaNestJSGoDjangoPHPASP.NET
基础路径/api/v1/api/v1/api/v1/api/v1/api/v1/api/v1
认证JWT+SecurityJWT+GuardJWT+CasbinJWTJWTJWT
分页pageNum/pageSize同左page/perPage同左同左同左
SwaggerKnife4j /doc.htmlSwagger /apiSwaggerSwaggerSwaggerSwagger
多租户✅ 完整
SSE

接口差异

认证接口

所有后端的登录/登出/刷新 Token 接口完全一致。

用户管理

功能Java其他后端差异
用户列表支持 deptId 筛选部分后端可能不支持
重置密码返回新密码明文可能返回空或加密串

文件上传

差异点说明
大小限制各后端默认不同,需查看配置
存储方式本地/OSS/S3,各后端可配置
允许类型默认 jpg/png/gif/pdf/doc/xls

版本兼容策略

客户端适配

typescript
// 检查后端版本
const checkVersion = (version: string) => {
  const [major] = version.split('.')
  if (parseInt(major) >= 2) {
    // 处理 v2 新增字段
  }
}

字段处理

typescript
// 安全读取可选字段
const name = user.nickname ?? user.username ?? '未知'

基于 MIT 许可发布 · 由 ❤️ 和 ☕ 驱动 · 支持作者