java Swagger向枚举添加描述

mqxuamgl  于 2023-09-29  发布在  Java
关注(0)|答案(2)|浏览(168)

我有一个类,看起来像这样:

public class Rule {

    private RuleType type; //enum
    private String value;
}

enum是:

public enum RuleType {
    TYPE_A, TYPE_B, TYPE_C;
}

现在,每个规则类型的值都不同。TYPE_A需要数字1到10,TYPE_B为true或false,TYPE_C为字符串。我尝试在枚举中添加swagger注解,以便文档可以显示这一点,类似于以下内容:

public enum RuleType {
    @ApiModelProperty(value = "1 - 10")
    TYPE_A, 
    @ApiModelProperty(value = "True or False")
    TYPE_B, 
    @ApiModelProperty(value = "String")
    TYPE_C;
}

但这不管用。产生的swagger只是忽略枚举上的属性。有没有一种方法可以创建这样的文档?

whlutmcx

whlutmcx1#

你不能随心所欲地做这件事。但还有一个你想要的简单的解决方案。

public class Rule {

    @ApiModelProperty(value = 
            "TYPE_A must be 1 - 10\n" +
            "TYPE_B must be True or False\n" +
            "TYPE_C must be String")
    private RuleType type; //enum
    private String value;
}

你可以通过这个链接看到代码的最终结果:https://i.stack.imgur.com/pMA6N.png

9q78igpj

9q78igpj2#

正如@Helen提到的,目前还不能为枚举设置描述。但是,您可以按照@Azamat的建议,为属性指定一个描述。下面是一个使用Microprofile OpenAPI注解的类似方法。

import org.eclipse.microprofile.openapi.annotations.media.Schema;

public class Foobar {
  private String value;

  @Schema(
      name = "type",
      description = "TYPE_A - [1 - 10], TYPE_B - [True or False], TYPE_C - [String]")
  private RuleType type;
}

Swagger UI

Foobar{
value   string
type    string
TYPE_A - [1 - 10], TYPE_B - [True or False], TYPE_C - [String]

Enum:
[ TYPE_A, TYPE_B, TYPE_C ]
}

相关问题