Files
springboot-template/API_DOCUMENT.md
shenjianZ 3a9bf61839 feat: 初始化 Spring Boot 项目模板,搭建完整的用户认证与管理系统
- 新增项目基础配置:pom.xml 依赖管理、多环境配置(dev/prod)、Dockerfile、.env.example
  - 新增安全认证模块:JWT 工具类、JWT 过滤器、Spring Security 配置、自定义 UserDetails
  - 新增用户管理功能:注册/登录/查询/修改、角色管理(USER/ADMIN/ROOT)、分页查询、状态启禁用
  - 新增密码重置功能:邮箱验证码发送、验证码校验重置、频率限制与过期机制
  - 新增基础架构层:统一响应体 RestBean、全局异常处理、日志拦截器、Redis 工具类、JPA 配置
  - 新增 Swagger/OpenAPI 文档配置与完整的 API 接口文档(API_DOCUMENT.md)
  - 新增数据库初始化 SQL 脚本(init.sql)
2026-03-31 08:54:06 +08:00

4.7 KiB
Raw Blame History

API 接口文档

Base URL: http://localhost:8080/api/v1

在线文档: http://localhost:8080/swagger-ui/index.html

通用说明

响应格式

所有接口统一返回 RestBean

{
  "status": 200,
  "message": "success",
  "data": {}
}

认证方式

需要认证的接口在请求头中携带 JWT Token

Authorization: Bearer <token>

登录/注册接口会返回 Token。


用户接口

注册

POST /api/v1/user/register

公开接口,无需认证。

请求体:

字段 类型 必填 说明
username String 用户名2-50 位
password String 密码6-64 位
email String 邮箱

请求示例:

{
  "username": "testuser",
  "password": "123456",
  "email": "test@example.com"
}

响应示例:

{
  "status": 200,
  "message": "success",
  "data": "eyJhbGciOiJIUzUxMiJ9..."
}

登录

POST /api/v1/user/login

公开接口,无需认证。

请求体:

字段 类型 必填 说明
username String 用户名
password String 密码

请求示例:

{
  "username": "testuser",
  "password": "123456"
}

响应示例:

{
  "status": 200,
  "message": "success",
  "data": "eyJhbGciOiJIUzUxMiJ9..."
}

获取用户信息

GET /api/v1/user/info

需要认证

请求头:

Authorization: Bearer <token>

响应示例:

{
  "status": 200,
  "message": "success",
  "data": {
    "id": 1,
    "username": "testuser",
    "email": "test@example.com",
    "status": 1,
    "role": "USER",
    "createdAt": "2026-03-31 08:00:00",
    "updatedAt": "2026-03-31 08:00:00"
  }
}

发送密码找回验证码

POST /api/v1/user/password-reset/request

公开接口,无需认证。

请求体:

字段 类型 必填 说明
email String 已注册的邮箱

请求示例:

{
  "email": "test@example.com"
}

频率限制:

  • 两次请求间隔至少 60 秒
  • 同一邮箱 1 小时内最多 5 次

验证码重置密码

POST /api/v1/user/password-reset/confirm

公开接口,无需认证。

请求体:

字段 类型 必填 说明
email String 邮箱
code String 6 位数字验证码
newPassword String 新密码6-64 位

请求示例:

{
  "email": "test@example.com",
  "code": "123456",
  "newPassword": "newpass123"
}

验证码限制:

  • 有效期 10 分钟
  • 最多尝试 5 次

用户列表(管理员)

GET /api/v1/user/list

需要认证 + ADMIN 角色

请求参数:

参数 类型 必填 说明
page Integer 页码,默认 1
size Integer 每页条数,默认 10
keyword String 搜索关键词(用户名/邮箱)
role String 角色筛选USER/ADMIN
status Integer 状态筛选1=正常 0=禁用)

响应示例:

{
  "status": 200,
  "message": "success",
  "data": {
    "records": [
      {
        "id": 1,
        "username": "admin",
        "email": "admin@example.com",
        "status": 1,
        "role": "ADMIN",
        "createdAt": "2026-03-31 08:00:00",
        "updatedAt": "2026-03-31 08:00:00"
      }
    ],
    "total": 1,
    "page": 1,
    "size": 10
  }
}

更新用户状态(管理员)

PUT /api/v1/user/{userId}/status

需要认证 + ADMIN 角色

路径参数:

参数 类型 说明
userId Long 用户 ID

请求体:

字段 类型 必填 说明
status Integer 1=启用0=禁用

请求示例:

{
  "status": 0
}

不允许修改自己的状态。


更新用户角色(管理员)

PUT /api/v1/user/{userId}/role

需要认证 + ADMIN 角色

路径参数:

参数 类型 说明
userId Long 用户 ID

请求体:

字段 类型 必填 说明
role String 角色名称USER 或 ADMIN

请求示例:

{
  "role": "ADMIN"
}

不允许修改自己的角色。


错误码

错误码 说明
200 成功
400 参数错误 / 请求格式错误
403 权限不足 / 账号被禁用
404 数据不存在
500 系统异常

业务错误码:

错误码 说明
1001 用户不存在
1002 密码错误
1003 账号已被锁定