首页 > 其他分享 >Swagger工具集及Swagger工具集常见注解和用法

Swagger工具集及Swagger工具集常见注解和用法

时间:2024-04-02 16:29:53浏览次数:27  
标签:工具集 value ApiModelProperty API 文档 注解 Swagger

目录

一、什么是Swagger工具集

二、swagger常用的注解和用法

@Api

@ApiOperation

@ApiParam

@ApiModel

@ApiModelProperty

@ApiIgnore

三、常见问题

1.@ApiModelProperty和@ApiOperation有什么区别?


一、什么是Swagger工具集

Swagger工具集是一系列围绕OpenAPI Specification(OAS,原名为Swagger Specification)规范构建的工具,主要用于API的设计、文档生成、测试和部署。它允许开发人员通过标准和一致的方式定义RESTful API,并能自动化地生成交互式的API文档、SDKs(客户端代码)、服务器模拟(stubs)以及其他API相关的工件。

Swagger工具集包括但不限于以下几个核心组件:

  • Swagger Editor:一个在线编辑器,用于创建和编辑符合OpenAPI规范的API定义文件(YAML或JSON格式),并实时预览文档。
  • Swagger UI:一个静态网页应用,它可以读取OpenAPI规范定义文件,并将其呈现为交互式的API文档,其中包含了接口说明、请求参数、响应示例等功能,可以直接在界面上进行API的调用和测试。

  • Swagger Codegen:可以根据OpenAPI规范生成多种编程语言的客户端和服务端代码,例如Java、Python、JavaScript等,大大加快了API的开发和集成速度。

  • Swagger Core:一套Java库,提供了处理和解析OpenAPI规范的基础结构和模型。

在Spring Boot项目中集成Swagger后,可以通过使用对应的注解(如@Api@ApiOperation@ApiModelProperty等)来装饰控制器和模型类,从而自动生成详细的API文档。这样不仅提高了API文档的一致性和准确性,也极大地简化了开发流程,提升了前后端协作的效率。

二、swagger常用的注解和用法

Swagger(现在通常称为OpenAPI Specification,但仍有很多开发者习惯性地称其为Swagger)在Java生态中配合Spring框架或其他Web框架时,常用的一些注解可以帮助定义和文档化RESTful API。以下是Swagger/Swagger UI中一些常见的注解及其用法:

  • @Api

    • 类级别的注解,用于标记一个类作为API资源。
    • 参数:
      • value: 可选,设置资源的名称或ID,会在文档中展示。
      • tags: 用于分类,方便在Swagger UI中组织和筛选不同的API分组。
      • description: 对该API资源的简短描述。
  • @ApiOperation

    • 方法级别的注解,用于描述Controller中的HTTP方法(GET、POST等)的行为和用途。
    • 参数:
      • value: HTTP方法的简短描述。
      • notes: 更详细的操作说明。
      • tags: 同上,用于归类。
      • response: 可指定响应的类型。
      • httpMethod: 指定HTTP方法。
  • @ApiParam

    • 用于方法参数或方法返回值上的注解,用于描述请求参数或响应字段。
    • 参数:
      • value: 参数的描述。
      • name: 参数名。
      • required: 表示该参数是否为必需。
      • dataType: 数据类型。
      • defaultValue: 默认值。
      • 其他还有allowableValuesexample等参数,用于进一步约束和描述参数。
  • @ApiModel

    • 类级别的注解,用于定义一个复杂的请求体或响应体模型。
    • 参数:
      • value: 模型的名称。
      • description: 模型的描述。
  • @ApiModelProperty

    • 用于类属性上的注解,描述模型中的单个属性。
    • 参数:
      • value: 属性描述。
      • name: 属性名(默认情况下使用变量名)。
      • required: 表示该属性在模型中是否必须存在。
      • example: 示例值。
  • @ApiIgnore

    用于方法或类级别,用于忽略某个API资源或方法,使其不被Swagger扫描和包含在生成的文档中。
  • 示例用法:
@Api(value = "用户管理", description = "用户相关操作")
public class UserController {

    @ApiOperation(value = "获取用户信息", tags = "用户信息")
    @GetMapping("/{userId}")
    public User getUserInfo(@ApiParam(name = "userId", value = "用户ID", required = true) @PathVariable Long userId) {
        // ...
    }

    @ApiModel(description = "用户实体")
    public class User {
        @ApiModelProperty(value = "用户ID", example = "123")
        private Long id;
        // ...
    }
}

通过这些注解,开发者可以轻松地为他们的API编写结构化的、机器可读的文档,同时Swagger工具会基于这些注解生成丰富的API文档界面,便于API使用者理解和调用。

三、常见问题

1.@ApiModelProperty和@ApiOperation有什么区别?

答@ApiModelProperty 和 @ApiOperation 都是 Swagger 工具集中的注解,用于增强 RESTful API 的文档生成和交互体验,但它们的作用范围和目的略有不同。

  • @ApiOperation

    • 该注解用于类的方法级别,通常放在控制器(Controller)的方法前面,用于描述整个 HTTP 请求动作的信息,如请求路径、HTTP 方法(GET、POST 等)、操作的简短摘要、详细描述、响应的状态码、响应的实体类等。
    • 示例:
      @ApiOperation(value = "创建用户", notes = "用于新增一个用户", tags = {"用户管理"})
      @PostMapping("/users")
      public ResponseEntity<User> createUser(@RequestBody User user) {
          // ...
      }
  • @ApiModelProperty

    • 该注解用于类的字段级别或属性级别,用于描述类的属性或模型字段,出现在实体类(Model)中,为 API 文档提供关于请求或响应中字段的详细信息,如字段名、字段描述、是否必填、默认值等。
    • 示例:
      public class User {
      
          @ApiModelProperty(value = "用户名", required = true)
          private String username;
      
          @ApiModelProperty(value = "密码", required = true)
          private String password;
      
          // getters and setters...
      }

总之,@ApiOperation 主要用于描述一个完整的 HTTP 请求操作,而 @ApiModelProperty 专注于描述请求或响应中涉及的实体类字段信息。两者结合使用,可以为 Swagger 自动生成的 API 文档提供丰富的上下文和细节说明。

标签:工具集,value,ApiModelProperty,API,文档,注解,Swagger
From: https://blog.csdn.net/wangyufei0815/article/details/137274235

相关文章

  • Type注解对象类型
    Type注解对象在TS中对于对象数据的类型注解,除了使用interface之外还可以使用类型别名来进行注解,作用相似typePerson={name:stringage:number}letpeople:Person={name:'张三',age:16}console.log(people)Type继承type同样也可......
  • 学习Source Generators之从swagger中生成类
    前面学习了一些SourceGenerators的基础只是,接下来就来实践一下,用这个来生成我们所需要的代码。本文将通过读取swagger.json的内容,解析并生成对应的请求响应类的代码。创建项目首先还是先创建两个项目,一个控制台程序,一个类库。添加swagger文件在控制台程序中添加Files目录,并......
  • Java:注解
    Java中的注解(Annotations)是一种用于提供元数据的特殊接口,它们可以被用于给代码添加信息,而这些信息可以在编译时、类加载时或运行时被读取,并且可以影响程序的行为。注解不会直接影响程序的逻辑,但它们可以被编译器或运行时环境用来生成额外的代码、进行类型检查或者在运行时进......
  • @ComponentScan注解 -【Spring底层原理
    案例已上传GitHub,欢迎star:https://github.com/oneStarLR/spring-annotation一、注解用法1.背景知识什么是组件?组件也是抽象的概念,可以理解为一些符合某种规范的类组合在一起就构成了组件,他可以提供某些特定的功能,但实际他们都是类,只不过有他们特殊的规定。组件......
  • 枚举类和注解
    目录一、枚举类的使用1.1、枚举类的理解1.2、自定义枚举类1.3、使用enum关键字定义枚举类1.4、Enum类中的常用方法1.5、使用enum关键字定义的枚举类实现接口二、注解的使用2.1、注解的理解2.2、Annotation的使用示例2.3、如何自定义注解2.4、jdk中4个基本的元注解的使用......
  • JAVA注解-ElementType详解
    ava中元注解(用来标识注解的注解)有四个: @Retention@Target@Document@Inherited; @Retention:注解的保留位置@Retention(RetentionPolicy.SOURCE)   //注解仅存在于源码中,在class字节码文件中不包含@Retention(RetentionPolicy.......
  • SpringAOP增强-几种不同将注解和切面方法的关联方式
    @Around的作用既可以在目标方法之前织入增强动作,也可以在执行目标方法之后织入增强动作;可以决定目标方法在什么时候执行,如何执行,甚至可以完全阻止目标目标方法的执行;可以改变执行目标方法的参数值,也可以改变执行目标方法之后的返回值;当需要改变目标方法的返回值时,只能使用Aro......
  • Spring AOP 和 拦截器 获取类上与方法上的注解
    在做一个获取目标注解的鉴权功能时,想到了AOP与拦截器两种方式,其中@HasPermission是我自定义的注解,以下分别为AOP与拦截器获取访问目标类与方法上的注解的方法。由于我的系统在拦截器上配置了拦截过则,所以我选的是拦截器的方式,读者可根据自己的需求来。一、SpringAOP方式获取......
  • @Transactional详解(作用、失效场景与解决方法)| 事务注解实际原理(AOP)解析
    开发中代码实现事务的方式,理论上说有两种:编程式事务、注解式事务。但是实际上使用最多的还是注解实现的事务控制; 1、编程式事务(开发用的很少了)基于底层的API,如PlatformTransactionManager、TransactionDefinition 和 TransactionTemplate 等核心接口,开发者完全可以通过编......
  • java使用注解实现系统日志记录
    不论在神魔类型的项目中,日志系统绝对是一个不可少的存在,那么,怎末用一个最简便的方式来实现日志在数据库中的存储呢??最近在项目中正好负责了日志模块的实现,就简单记录一下。我在这个项目中使用的是aop自定义注解的方式,大致步骤如下:1.第一步,首先需要先定义一个注解类,来实现部分方法......