当前位置: 首页 > news >正文

Springdoc 全部注解一文解释清楚

文章目录

  • **1. 核心注解**
    • **@Tag-Class类上**
  • **2. 方法级别注解**
    • **@Operation-方法描述**
    • **@ApiResponse 和 @ApiResponses-方法的返回结果**
  • **3. 参数相关注解**
    • **@Parameter-方法参数**
    • **@Parameters方法参数(单个)**
  • **4. 实体模型相关注解**
    • **@Schema-描述实体类或字段的信息**
  • **5. 其他注解**
    • **@Hidden-隐藏某个类、方法或参数**
  • **6. 配置相关注解(不常用)**
    • **@OpenAPIDefinition-全局配置 OpenAPI 文档的元信息**
  • **7. 总结**

系列文章:
springboot-swagger详解
springboot-优美的Knife4j文档-Swagger进化
Spring Cloud Gateway 网关整合 Knife4j
SpringBoot之如何集成SpringDoc最详细文档

1. 核心注解

@Tag-Class类上

  • 作用:为控制器或方法分组,便于组织和分类 API。

  • 常用属性

    • name:标签名称。
    • description:标签描述信息。
  • 示例

      @Tag(name = "策略库接口",description = "这是策略库的所有接口")
      @RestController
      @RequestMapping("/tacticsInfo")
      public class TacticsInfoController extends BaseController
      {
        // ...
       }
    

在这里插入图片描述

2. 方法级别注解

@Operation-方法描述

  • 作用:描述一个 API 方法的功能。
  • 常用属性
    • summary:方法的简短描述。
    • description:方法的详细描述。
    • responses:定义可能的响应结果。
    • deprecated:标记方法是否已废弃。
  • 示例
      @Operation(summary = "查询策略库:tactics_info列表",description = "查询策略库:tactics_info列表-list接口")
      @RequiresPermissions("business:tacticsInfo:list")
      @GetMapping("/list")
      public TableDataInfo list(TacticsInfo tacticsInfo)
      {
        // ...
    }
    

在这里插入图片描述

@ApiResponse 和 @ApiResponses-方法的返回结果

  • 作用:描述 API 方法的响应结果。
  • 常用属性
    • responseCode:HTTP 状态码。
    • description:响应描述信息。
    • content:响应的内容类型(如 JSON、XML)。
  • 示例
    @Operation(summary = "创建用户", description = "根据用户信息创建新用户")
    @ApiResponses({
        @ApiResponse(responseCode = "200", description = "成功创建用户"),
        @ApiResponse(responseCode = "400", description = "请求参数错误"),
        @ApiResponse(responseCode = "500", description = "服务器内部错误")
    })
    @PostMapping
    public ResponseEntity<User> createUser(@RequestBody User user) {
        // ...
    }
    

3. 参数相关注解

@Parameter-方法参数

  • 作用:描述方法参数的含义。
  • 常用属性
    • name:参数名称。
    • description:参数描述信息。
    • required:是否必填。
    • example:参数示例值。
    • in:参数位置(如 pathqueryheader 等)。
  • 示例
    @Operation(summary = "根据 ID 获取用户")
    @GetMapping("/{id}")
    public User getUserById(
        @Parameter(name = "id", description = "用户 ID", required = true, example = "1") 
        @PathVariable Long id) {
        // ...
    }
    

@Parameters方法参数(单个)

  • 作用:描述多个参数。
  • 示例
    @Operation(summary = "搜索用户")
    @Parameters({
        @Parameter(name = "name", description = "用户名", in = ParameterIn.QUERY),
        @Parameter(name = "age", description = "用户年龄", in = ParameterIn.QUERY)
    })
    @GetMapping("/search")
    public List<User> searchUsers(@RequestParam String name, @RequestParam Integer age) {
        // ...
    }
    

4. 实体模型相关注解

@Schema-描述实体类或字段的信息

  • 作用:描述实体类或字段的信息。
  • 常用属性
    • description:模型或字段的描述信息。
    • example:字段示例值。
    • required:字段是否必填。
    • type:字段的数据类型。
    • format:字段的格式(如 date-timeemail 等)。
  • 示例
    @Schema(description = "用户的基本信息")
    public class User {
        @Schema(description = "用户 ID", example = "1", required = true)
        private Long id;
    
        @Schema(description = "用户名", example = "John Doe", required = true)
        private String name;
    
        @Schema(description = "用户年龄", example = "25")
        private Integer age;
        // getters and setters
    }
    

5. 其他注解

@Hidden-隐藏某个类、方法或参数

  • 作用:隐藏某个类、方法或参数,不将其包含在生成的文档中。
  • 示例
    @Hidden
    @GetMapping("/internal")
    public String internalEndpoint() {
        return "This endpoint is ignored by springdoc.";
    }
    

6. 配置相关注解(不常用)

@OpenAPIDefinition-全局配置 OpenAPI 文档的元信息

  • 作用:全局配置 OpenAPI 文档的元信息。这个不常用,还是常用配置文件类型的
  • 常用属性
    • info:文档的基本信息(标题、版本、描述等)。
    • tags:全局标签定义。
    • servers:API 的服务器地址。
  • 示例
    @OpenAPIDefinition(
        info = @Info(title = "用户管理系统", version = "1.0", description = "用户相关的 API 文档"),
        tags = {
            @Tag(name = "用户管理", description = "与用户相关的操作")
        },
        servers = {
            @Server(url = "http://localhost:8080", description = "本地开发环境")
        }
    )
    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    

7. 总结

以下是 springdoc 常用注解的分类总结:

注解作用
@Tag为控制器或方法分组,便于组织和分类 API。
@Operation描述 API 方法的功能。
@ApiResponse描述单个响应结果。
@Parameter描述方法参数的含义。
@Schema描述实体类或字段的信息。
@Hidden隐藏某个类、方法或参数,不包含在生成的文档中。
@OpenAPIDefinition全局配置 OpenAPI 文档的元信息(标题、版本、描述等)。

相关文章:

  • Python的Pytest测试框架(1)
  • 实验一:统计字符个数
  • 【QT】-toUtf8() 和 toBase64()的区别
  • mysql5.7主从部署(docker-compose版本)
  • 【责任链模式的多种实现方式及其应用】
  • Modbus协议
  • LeetCode[142] 环形链表 II
  • 【C++】memset和memcpy函数
  • 案例驱动的 IT 团队管理:创新与突破之路:第二章 团队组建:从人才画像到生态构建-2.2.2案例:某游戏公司“特种作战小组“模式
  • NAT及P2P通信
  • 本地部署deepseek-r1建立向量知识库和知识库检索实践【代码】
  • defineExpose函数
  • matlab R2024b下载教程及安装教程(附安装包)
  • 嵌入式面经-C语言:智能指针,`#define` 和 `const`,`typedef`,头文件中定义静态变量
  • turfjs多边形切割多边形求交集
  • centos 如何将 nginx reload权限给其他用户
  • Linux安装部署Elasticsearch8 全过程记录
  • Nodejs使用redis
  • 解决leetcode第3480题删除一个冲突对后的最大子数组数目
  • Jocker靶机全面解析:漏洞挖掘、渗透测试与防御策略
  • 上海“生育友好岗”已让4000余人受益,今年将推产假社保补贴政策
  • 一个失败的赛季咎由自取,皇马只能把希望留到夏天
  • 大家聊中国式现代化|周冯琦:转角见美,让“绿意”触手可及
  • 女儿被偷拍后,一个父亲的战斗
  • 政治局会议深读|首提“持续巩固房地产市场稳定态势”,楼市政策还有哪些优化空间
  • 去年立案侦办侵权假冒案件3.7万起,公安部公布13起案例