首页 > 其他分享 >Swagger文档生成艺术:掌握@ApiModel和@ApiModelProperty的用法

Swagger文档生成艺术:掌握@ApiModel和@ApiModelProperty的用法

时间:2023-12-15 19:04:56浏览次数:35  
标签:ApiModel 模型 ApiModelProperty 文档 注解 Swagger 属性

在现代软件开发中,提供清晰全面的 API 文档 至关重要。@ApiModel 和 @ApiModelProperty 这样的代码注解在此方面表现出色,通过增强模型及其属性的元数据来丰富文档内容。它们的主要功能是为这些元素命名和描述,使生成的 API 文档更加明确。

Swagger文档生成艺术:掌握@ApiModel和@ApiModelProperty的用法_程序员

@ApiModel 和 @ApiModelProperty 的实际用例

这些注解不仅仅是为了展示;它们在各种情景中都发挥着实际的作用:

  • 文档生成:通过这些注解整合模型名称、描述和属性详情,可以简化准确详细的 API 文档编制工作。
  • 验证:利用 @ApiModelProperty 可以定义验证约束,如最大长度或最小值,帮助确保数据的完整性。
  • 模型解读:在生成的 API 指南中,@ApiModel 和 @ApiModelProperty 提供的信息有助于明确展示模型,包括示例和详细描述。

注解应用指南

@ApiModel 的注解用法如下:

属性

数据类型

默认值

说明

value

String

""

模型的名称

description

String

""

模型的描述

parent

Class<?>

Void.class

模型的父类

discriminator

String

""

模型的鉴别器

subTypes

Class<?>[]

{}

模型的子类

reference

String

""

模型的引用

example

String

""

模型的示例


另一方面,@ApiModelProperty 的使用注解如下:

属性

数据类型

默认值

说明

value

String

""

属性的名称

name

String

""

属性的名称

dataType

String

""

属性的数据类型

required

boolean

FALSE

属性是否必需

example

String

""

属性的示例

hidden

boolean

FALSE

属性是否隐藏

allowableValues

String

""

属性的允许值范围

access

String

""

属性的访问权限

notes

String

""

属性的注释

position

int

0

属性的位置


实践案例

考虑在一个用户管理系统中的用户模型,需要为其 API 提供清晰的定义。通过为我们的 User 类添加 @ApiModel 注解,以及用 @ApiModelProperty 描述每个属性,我们大大提高了文档的清晰度,使其对开发人员和用户更易于理解。

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

@ApiModel(value = "User", description = "用户模型")
public class User {
    @ApiModelProperty(value = "用户ID", example = "1")
    private Long id;
    
    @ApiModelProperty(value = "用户名", example = "john.doe")
    private String username;
    
    @ApiModelProperty(value = "年龄", example = "25")
    private Integer age;
    
    // 省略其他属性的getters和setters

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }
    
    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

这些注解确保了 API 文档有效地反映了模型及其属性,展示了名称、描述、类型和示例值。这种方法直接导致了一个界定清晰、易于使用的 API 参考资料。

关键注意事项

  • 集成相关的 Swagger 依赖并正确配置。
  • 注解必须准确定义属性,如名称、描述和数据类型。
  • 确保使用 @ApiModelProperty 的属性可以公开访问,并拥有适当的 getter 和 setter 方法。

关于注解使用的常见问题解答

问1:是否可以在一个模型上使用多个 @ApiModel 注解?

答1:不可以,一个模型应该有一个 @ApiModel 注解。

问2:一个属性上可以应用多个 @ApiModelProperty 注解吗?

答2:虽然一个属性可以有多个 @ApiModelProperty 注解,通常是为了提供不同的描述和设置。

与 Apifox 整合简化 API 管理

尽管 Swagger 很有用,但它使用起来可能比较麻烦,缺乏一些协作安全功能。因此,许多人转向使用 Apifox 的 IDEA 插件,以获得更强的功能和方便。它允许在 IDEA 中自动同步 Swagger 注解到 Apifox,并通过多端同步方便测试和维护。

详细使用教程 :如何使用 Apifox 自动生成 API 接口文档 - 一份详细指南

Swagger文档生成艺术:掌握@ApiModel和@ApiModelProperty的用法_API_02

知识扩展:

参考链接:

标签:ApiModel,模型,ApiModelProperty,文档,注解,Swagger,属性
From: https://blog.51cto.com/u_15964533/8843656

相关文章

  • 解决:Swagger API 未授权访问漏洞问题
    Swagger是一个用于设计、构建、文档化和使用RESTful风格的Web服务的开源软件框架。它通过提供一个交互式文档页面,让开发者可以更方便地查看和测试API接口。然而,在一些情况下,未经授权的访问可能会导致安全漏洞。本文将介绍如何解决SwaggerAPI未授权访问漏洞问题。未授权访......
  • easyYapi 简单使用 ,一次只导出一个方法,swagger 注解生效,md 文档
    easyYapi简单使用,一次只导出一个方法,swagger注解生效,md文档有时候开放平台需要写文档,这个时候给yapi和swagger就不太友好,导出md,在导入smartdoc或者自己的md线上,其他3方的文档库语雀啥的就会好很多。1.第一步安装idea插件4.设置配置信息3.swagger......
  • .net6 webapi Swagger显示控制器为版本及接口注释
    1.安装Nuget包:Swashbuckle.AspNetCore2.使用Swagger中间件builder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen(option=>{//要启用swagger版本控制要在api控制器或者方法上添加特性[ApiExplorerSettings(GroupName="版本号")] typ......
  • 一文浅入Springboot+mybatis-plus+actuator+Prometheus+Grafana+Swagger2.9.2开发运维
    Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTFUL风格的Web服务,是非常流行的API表达工具。Swagger能够自动生成完善的RESTFULAP文档,,同时并根据后台代码的修改同步更新,同时提供完整的测试页面来调试API。Prometheus是一个开源的服务监控系统和时序数据库......
  • 手摸手入门Springboot2.7集成Swagger2.9.2
    环境介绍技术栈springboot+mybatis-plus+mysql+oracle+Swagger软件版本mysql8IDEAIntelliJIDEA2022.2.1JDK1.8SpringBoot2.7.13mybatis-plus3.5.3.2REST软件架构风格REST即表述性状态传递(英文:RepresentationalStateTransfer,简称REST,中文:表示层状态转移)是RoyFielding博士在20......
  • 解决Swagger UI 中文乱码问题
    ......
  • Swagger跟rest有什么区别?
    Swagger跟rest有什么区别? 我的答案:REST是指导思想,Swagger是实现方式。 AI的答案:Claude-2解释如下:REST是一种软件架构风格,它定义了一组设计原则和约束条件。REST是概念性的,它更像是一个指导思想和设计理念,不是一个具体的实现技术或标准。Swagger是一组开源工具,用于......
  • 若依集成knife4j实现swagger文档增强
    若依集成knife4j实现swagger文档增强本期全是干货,这里我就当你用的非常熟练了,在ruoyi-admin模块中pom文件里加入以下依赖 注:引用knife4j-spring-boot-starter依赖,项目中的swagger依赖若不用就可以删除了。<!--集成knife4j实现swagger文档增强--><dependen......
  • springboot集成swagger
    1.pom引入<!--swagger--><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version></dependency&......
  • 014 springboot2.7.10与swagger3.0.0出现的版本冲突问题,以及解决办法
    springboot2.7.10集成Swagger3.0.0过程中出现的错误提示翻译过来:解决办法:1.网上的解决办法1:在配置文件中添加以下内容spring:mvc:#解决springboot2.7.10与swagger3版本冲突的问题pathmatch:matching-strategy:ant_path_matcher 结果报错,springboot......