Skip to content

API 规范 ​

接口命名规范 ​

请求方法规范 ​

方法用途幂等性说明使用理由
GET读取数据是用于查询操作,不修改数据GET 天然幂等,可被浏览器缓存,适合查询场景
POST提交数据否用于创建或执行业务逻辑POST 可携带复杂请求体,适合写入操作,统一使用 POST 便于后端统一处理

URI 结构规范 ​

结构说明 ​

层级说明示例是否必需
模块名后端模块标识iam、sys、cms是
权限标识免鉴权接口标识public否
资源名业务资源名称user、order是
操作后缀具体操作类型page、list、info是

结构示例 ​

完整 URI模块名权限标识资源名操作后缀说明
/iam/user/pageiam-userpage用户分页查询(需鉴权)
/iam/user/listiam-userlist用户列表查询(需鉴权)
/iam/user/info/{id}iam-userinfo用户详情查询(需鉴权)
/iam/user/saveiam-usersave用户保存(需鉴权)
/iam/user/removeiam-userremove用户删除(需鉴权)
/iam/public/loginiampubliclogin-用户登录(免鉴权)
/iam/public/picture/captchaiampublicpicturecaptcha获取验证码(免鉴权)

操作后缀与 URI 示例 ​

后缀用途HTTP 方法URI 示例接口描述是否需要鉴权
/page分页查询GET/iam/user/page获取用户分页是
/list列表查询GET/iam/user/list获取用户列表是
/info详情查询GET/iam/user/info/{id}获取用户详情是
/save保存(新增/修改一体)POST/iam/user/save保存用户信息是
/create新增(仅有新增需求)POST/iam/user/create新增用户是
/update修改(仅有修改需求)POST/iam/user/update修改用户信息是
/remove删除(单个/批量)POST/iam/user/remove删除用户是
/options下拉选项查询GET/iam/user/options获取用户下拉选项是
-登录接口POST/iam/public/login用户登录否
/captcha获取验证码GET/iam/public/picture/captcha获取图片验证码否

接口组划分规则 ​

规则说明示例
去除模块名删除一级模块标识/user/page → user
去除权限标识删除 public 层级/public/login → login
去除操作后缀删除末尾操作标识/user/page → user
剩余部分为接口组相同接口组共享业务逻辑user 接口组

接口参数规范 ​

请求参数列表 ​

参数名称参数位置类型默认值必填说明
tokenheaderString-否用户认证 token
currentqueryInteger1否页码
sizequeryInteger10否每页条数
orderByqueryStringid desc否排序字段
timeFromqueryString-否时间范围开始
timeToqueryString-否时间范围结束

参数格式规范 ​

参数类型格式要求示例
时间格式yyyy-MM-dd HH:mm:ss2024-01-01 12:00:00
日期格式yyyy-MM-dd2024-01-01
页码范围≥ 1current ≥ 1
每页条数1-100size: 1-100

接口返回值规范 ​

通用返回字段 ​

字段名类型说明
codeInteger响应码
msgString响应消息
dataObject业务数据
requestTimeLocalDateTime请求进入时间(生产环境为 null)
responseTimeLocalDateTime响应返回时间(生产环境为 null)
costTimeLong请求耗时毫秒(生产环境为 null)

响应码说明 ​

响应码含义处理方式
200成功正常业务处理
400参数校验失败提示用户修正参数
401未授权(token 缺失或会话失效)跳转登录
403禁止访问提示无权限
404资源不存在提示资源不存在
429请求过于频繁(限流)稍后重试
500系统错误需要开发人员处理
-1通用业务异常(未指定业务码时兜底)提示 msg 内容

分页返回结构 ​

字段名类型说明
currentInteger当前页码
sizeInteger每页条数
pageInteger总页码数
totalInteger数据总条数
offsetInteger偏移量
rowsArray业务数据列表

返回值示例 ​

成功响应:

json
{
  "code": 200,
  "msg": "Success",
  "data": {
    "id": 1,
    "name": "John"
  },
  "requestTime": "2024-01-01 12:00:00",
  "responseTime": "2024-01-01 12:00:00",
  "costTime": 100
}

分页响应:

json
{
  "code": 200,
  "msg": "Success",
  "data": {
    "current": 1,
    "size": 10,
    "page": 10,
    "total": 100,
    "offset": 0,
    "rows": [...]
  },
  "requestTime": "2024-01-01 12:00:00",
  "responseTime": "2024-01-01 12:00:00",
  "costTime": 150
}

错误码对照表 ​

ResultCode 仅定义 HTTP 标准语义码(200/400/401/403/404/500)。业务异常使用字符串消息描述(如 ValidationException.of("数据不存在")),无预定义业务数字码。

HTTP 状态类返回码 ​

返回码枚举值说明
200SUCCESS请求成功
400VALIDATION_ERROR参数校验失败(@Valid、ValidationException)
401UNAUTHORIZED未授权,跳转登录(UnauthorizedException 或会话过滤器拦截)
403FORBIDDEN禁止访问
404NOT_FOUND资源不存在(NotFoundException 或路由不存在)
429-请求过于频繁(限流过滤器,非 ResultCode 定义)
500ERROR系统错误
-1-通用业务异常兜底(CommonException 及未指定业务码的异常)

未授权响应说明 ​

鉴权失败由会话过滤器统一拦截,返回 HTTP 401,响应体为非标准结构:

json
{
  "message": "缺少认证 Token"
}
message说明
缺少认证 Token请求未携带 token
会话无效或已过期token 校验失败或 Redis 会话不存在

限流响应说明 ​

限流由请求控制过滤器(RequestControlFilter)拦截,返回 code=429 与提示消息。

权限校验规范 ​

权限校验规则 ​

规则说明示例
token 校验需验证权限的接口必须在 header 传 tokenAuthorization: Bearer xxx
临时 token一次性 token 从专用接口获取仅支持 query 参数传递
Origin 判断通过 Origin header 确定前端站点可在 query 附加

免鉴权接口规则 ​

规则说明示例
路径标识URI 中包含 public 层级/iam/public/login
白名单配置在安全配置类中无需登录即可访问
验证码接口获取验证码无需鉴权/iam/public/captcha

Released under the MIT License.