用 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 版本依然稳定好用



相关文章
|
3月前
|
前端开发 安全 Java
集成Knife4j
knife4j是Java MVC框架集成Swagger的增强工具,前身swagger-bootstrap-ui,旨在提供更美观、易用的API文档界面。轻量如匕首,功能强大,支持全局参数设置、离线文档下载、友好测试界面。集成简便,通过引入starter依赖并访问/doc.html即可使用,助力前后端高效协作,提升接口调试与维护体验。
|
前端开发 JavaScript Shell
如何免安装使用 Python?推荐 17 个在线的 Python 解释器!
如何免安装使用 Python?推荐 17 个在线的 Python 解释器!
993 0
|
11月前
|
人工智能 前端开发 Java
十几行代码实现 Manus,Spring AI Alibaba Graph 快速预览
Spring AI Alibaba Graph 的核心开发已完成,即将发布正式版本。开发者可基于此轻松构建工作流、智能体及多智能体系统,功能丰富且灵活。文章通过三个示例展示了其应用:1) 客户评价处理系统,实现两级问题分类与自动处理;2) 基于 ReAct Agent 的天气预报查询系统,循环执行用户指令直至完成;3) 基于 Supervisor 多智能体的 OpenManus 实现,简化了流程控制逻辑并优化了工具覆盖度。此外,还提供了运行示例的方法及未来规划,欢迎开发者参与贡献。
|
消息中间件 SQL 关系型数据库
实时计算 Flink版操作报错合集之启动了一段时间后报错:The heartbeat of JobManager with id ace2db93308ae07b4e577b321c8b7e96 timed out.如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
735 5
|
Java API 开发者
Bladex生成Swagger的方法
Bladex生成Swagger的方法
|
Java
Unable to find @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest
Unable to find @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest
440 0
|
前端开发 应用服务中间件 nginx
使用swagger和knife4j生成的接口文档在浏览器中输入地址后报404错误
使用swagger和knife4j生成的接口文档在浏览器中输入地址后报404错误
988 0
|
Java Spring
【已解决】Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception .lang.NullPointerEx
【已解决】Failed to start bean ‘documentationPluginsBootstrapper‘; nested exception .lang.NullPointerEx
662 0
|
移动开发 前端开发 网络协议
重学SSE
重学SSE
816 0
|
jenkins Java 持续交付
一篇文章讲明白JenkinsPipelinescript指令创建和变量定义
一篇文章讲明白JenkinsPipelinescript指令创建和变量定义
678 0

热门文章

最新文章