SpringBoot集成Swagger(八)@ApiModelProp

「这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战


相关文章

Java随笔记:Java随笔记


前言

  • 上一篇我们讲到了@ApiModel()
  • 今天给大家带来@ApiModelProperty()详解!
  • 顾名思义,这玩意是用来标注属性的

ApiModelProperty()

  • 熟悉的小伙伴们都知道了,先撸进去看看!
  • @Target({ElementType.METHOD, ElementType.FIELD})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface ApiModelProperty {
        String value() default "";
    ​
        String name() default "";
    ​
        String allowableValues() default "";
    ​
        String access() default "";
    ​
        String notes() default "";
    ​
        String dataType() default "";
    ​
        boolean required() default false;
    ​
        int position() default 0;
    ​
        boolean hidden() default false;
    ​
        String example() default "";
    ​
        /** @deprecated */
        @Deprecated
        boolean readOnly() default false;
    ​
        ApiModelProperty.AccessMode accessMode() default ApiModelProperty.AccessMode.AUTO;
    ​
        String reference() default "";
    ​
        boolean allowEmptyValue() default false;
    ​
        Extension[] extensions() default {@Extension(
        properties = {@ExtensionProperty(
        name = "",
        value = ""
    )}
    )};
    ​
        public static enum AccessMode {
            AUTO,
            READ_ONLY,
            READ_WRITE;
    ​
            private AccessMode() {
            }
        }
    }
    复制代码
  • @Target的参数可知:它是使用在属性上或者方法上!
  • @Retention的参数可知:它是运行时生效的!
  • 那么,这么多参数分别是干嘛的呢?下面详细道来。
  • 测试案例

    • @Data
      @ApiModel(value = "学生类",description = "这是类的详细描述信息呀",parent = CourseResponse.class,subTypes = CourseResponse.class)
      public class StudentResponse{
      ​
          @ApiModelProperty(value = "姓名",
                  name = "name",
                  allowableValues = "32",
                  access = "1",
                  notes = "用户的姓名",
                  dataType = "String",
                  required = false,
                  position = 0,
                  hidden = false,
                  example = "大鱼",
                  readOnly = false,
                  reference = "name",
                  allowEmptyValue = false
          )
          private String name;
          @ApiModelProperty(value = "年龄")
          private int age;
          @ApiModelProperty(value = "爱好")
          private String like;
      ​
          @ApiModelProperty()
          private CourseResponse perResponse;
      }
      复制代码
  • 启动看结果

    • image-20211126200834724.png
    • image-20211126200854047.png
  • 效果已经看到了,下面我们对其每个参数进行解释。

总结

  • value()

    • 参数类型为String,作用为此属性的简要描述。
  • name()

    • 参数类型为String,作用为允许重写属性的名称。
  • allowableValues()

    • 参数类型为String,作用为限制此参数存储的长度。
  • access()

    • 参数类型为String,作用为允许从API文档中过滤属性
  • notes()

    • 参数类型为String,作用为该字段的注释说明
  • dataType()

    • 参数类型为String,作用为参数的数据类型。
  • required()

    • 参数类型为String,作用为指定参数是否可以为空,默认为false
  • position()

    • 参数类型为int,作用为允许显式地对模型中的属性排序。
  • hidden()

    • 参数类型为boolean,作用为是否允许模型属性隐藏在Swagger模型定义中,默认为false。
  • example()

    • 参数为String类型,作用为属性的示例值。
  • readOnly()

    • 参数类型为boolean,作用为是否允许将属性指定为只读,默认为false。
  • reference()

    • 参数类型为String,作用为指定对对应类型定义的引用,重写指定的任何其他数据名称。
  • allowEmptyValue()

    • 参数类型为boolean,作用为是否允许传递空值,默认为false
  • 由于这个参数实在太多,而且很多不大常用,我就不一一演示对比的区别了。
  • 感兴趣的小伙伴们可以对着我的总结来试一试~
  • 以上都是个人所言,如有不对,欢迎指出。
  • 如果对您有帮助,希望给我点个赞点个关注呗!

路漫漫其修远兮,吾必将上下求索~

如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~hahah