用 Swagger2 让 Spring Boot 接口“自己说话”

简介: Swagger2助力Spring Boot项目实现API自动化文档,通过注解自动生成接口说明与测试页面,提升前后端协作效率,支持在线调试、参数描述、示例响应,告别手动维护文档与Postman频繁切换。

在前后端分离的项目里,API 就是后端和前端之间的“普通话”。但问题是——

接口改了,文档没跟上?联调时反复问参数格式?测试要手动拼 JSON?

别慌,Swagger2 来救场。

它能让你的接口自动生成在线文档 + 支持一键测试,真正做到“代码即文档”。

下面看看怎么在 Spring Boot 项目中用好它。


1. 实体类:让字段也有“说明书”

先定义一个 User 类:

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel("用户实体")
public class User {
    @ApiModelProperty("用户ID")
    private Long id;
    @ApiModelProperty("用户名")
    private String username;
    @ApiModelProperty("密码(明文)")
    private String password;
    // getter / setter 省略
}
  • @ApiModel:给整个类加个标题;
  • @ApiModelProperty:给每个字段写说明。

这样,在 Swagger UI 的请求/响应示例中,字段含义一目了然,再也不用猜 name 到底是昵称还是真实姓名。


2. Controller:标注接口用途和参数

再来看一个典型的 Controller:

@RestController
@RequestMapping("/swagger")
@Api("用户管理接口") // 整个 Controller 的分组名称
public class TestController {
    @GetMapping("/get/{id}")
    @ApiOperation("根据ID查询用户") // 接口功能描述
    public JsonResult<User> getUserInfo(
        @PathVariable 
        @ApiParam("用户唯一标识") Long id // 路径参数说明
    ) {
        return new JsonResult<>(new User(id, "张三", "123456"));
    }
    @PostMapping("/insert")
    @ApiOperation("新增用户")
    public JsonResult<Void> insertUser(
        @RequestBody 
        @ApiParam("用户对象") User user // 请求体说明
    ) {
        // 保存逻辑
        return JsonResult.success();
    }
}

关键注解说明:

注解 作用
@Api 标识这个 Controller 是 Swagger 的资源,用于分组显示
@ApiOperation 描述这个接口是干啥的
@ApiParam 解释某个参数的含义(可用于 @PathVariable@RequestParam@RequestBody

3. 效果:打开浏览器,接口“活”了

启动项目,访问:

http://localhost:8080/swagger-ui.html

你会看到:

  • 所有接口按 Controller 分组;
  • 每个接口有清晰的描述、参数说明、请求方式;
  • 点击 “Try it out”,直接填参数 → 发送 → 查看 JSON 响应!

比如测试 /swagger/get/1,输入 ID=1,立刻看到返回:

{
  "code": 200,
  "data": {
    "id": 1,
    "username": "张三",
    "password": "123456"
  }
}

连 Postman 都省了。

对于 POST 接口,Swagger 还会自动生成 JSON 示例模板,你只需修改字段值即可提交。


4. 小贴士

  • 不要暴露到生产环境:通过配置控制 Swagger 开关,避免接口信息泄露;
  • 配合统一返回结构(如 JsonResult<T>),文档更规范;
  • 字段说明写清楚,前端同学会感谢你;
  • 虽然 Swagger2 已停止维护(推荐新项目用 Springdoc OpenAPI),但在 Spring Boot 2.x 项目中,2.2.2 或 2.9.2 版本依然稳定好用



相关文章
|
1天前
|
数据采集 领域建模 数据库
领域模型图(数据架构/ER图)
本文介绍如何通过四色原型法进行领域建模,构建数据架构中的ER图。以风控系统为例,依次解析关键流程、识别时标性原型(MI)、参与方-地点-物品原型(PPT)、角色原型(Role)和描述原型(DESC),逐步提炼出实体与关系,最终形成简洁的ER图,助力数据模型设计。
领域模型图(数据架构/ER图)
|
1天前
|
XML JSON Java
2.映射关系(1-1 1-n n-n)
MyBatis中通过resultMap实现关联映射:一对一使用基本映射或resultMap解决字段不一致;一对多在“一”方配置`&lt;collection&gt;`,如用户关联多个角色;多对一通过`&lt;association&gt;`实现,如博客关联作者;多对多借助中间类,双方均用`&lt;collection&gt;`维护关系,如用户与部门的双向关联。
|
23小时前
|
测试技术
OAuth2.0测试
本节演示授权码模式测试流程:通过访问指定URL跳转至SpringSecurity登录页,使用系统账户登录后,授权read/write权限,获取授权码并申请访问令牌token,完成OAuth2认证全过程。
OAuth2.0测试
|
23小时前
|
存储 安全 数据安全/隐私保护
认识OAuth2.0
OAuth2.0是一种开放授权协议,允许第三方应用在用户授权下安全访问资源,无需获取用户账号密码。其核心是通过令牌(token)机制实现权限控制,广泛用于第三方登录、服务间资源调用等场景。支持多种授权模式,其中授权码模式最安全,适用于Web和移动应用,如微信、QQ登录即基于此模式实现。
认识OAuth2.0
|
23小时前
|
安全 Java 数据库
RememberMe基本用法
本文介绍Spring Security中RememberMe功能的实现原理及优化方案。通过配置自动登录,用户勾选后可持久化会话,避免重复登录。系统通过remember-me令牌识别用户,但存在安全风险。为提升安全性,建议将Token持久化至数据库,并增加二次校验机制,防止令牌泄露导致的安全问题。
RememberMe基本用法
|
23小时前
|
数据安全/隐私保护
RememberMe简介及用法
RememberMe功能并非简单保存用户名密码,而是服务器端维持登录状态的机制。用户关闭浏览器后重新打开,仍可保持登录,提升体验,区别于传统Session会话需重复登录的方式。
|
1天前
|
存储 JSON NoSQL
MongoDB 文档的增删改查实战
本文以“文章评论”为例,介绍MongoDB文档的增删改查操作。涵盖单条与批量插入、条件查询、投影筛选、局部更新与原子增减,以及安全删除等核心操作,助你掌握高效数据管理技巧。
|
23小时前
4.2 简化模式测试
通过本地地址访问授权接口,用户登录后无需重复认证,直接返回token。授权页面提示授予read/write权限,选择Approve后跳转回调地址获取授权码,并用其向服务器申请通行令牌(token),完成OAuth流程。
|
1天前
|
存储 NoSQL 关系型数据库
MongoDB 数据库与集合操作详解
本文介绍MongoDB中数据库与集合的基本操作。数据按“数据库→集合→文档”层级组织。通过`use`创建或切换数据库,`show dbs`查看列表,`db.dropDatabase()`删除数据库。集合无需显式创建,插入文档时自动生,也可用`createCollection`手动创建。使用`show collections`查看集合,`drop()`删除集合。注意命名规范及保留名如admin、local等。
|
23小时前
|
安全 Java Spring
OAuth2.0实战案例
创建基于Spring Boot与Spring Cloud的父工程,配置OAuth安全认证基础环境,统一管理依赖版本及仓库源。

热门文章

最新文章