当前位置: 首页 > 知识库问答 >
问题:

OpenApi(Swagger)枚举显示名称

危晨
2023-03-14

例如:

@AllArgsConstructor
@Getter
@JsonbTypeAdapter(MyEnumAdapter.class)
@Schema(implementation = MyEnum.class)
public enum MyEnum{
    V1("displayname v1"),
    V2("displayname v2"),
    V3("displayname v3");

    private final String name;

    @Nullable
    public static MyEnumfromString(String name) {
        return Arrays.stream(values()).filter(u -> u.getName().equalsIgnoreCase(name)).findFirst().orElse(null);
    }


}

Swagger这样显示枚举:

MyEnum string
Enum:
[ V1, V2, V3 ]

我想要的是:

 MyEnum string
 Enum:
 [ "displayname V1", "displayname V2", "displayname V3" ]

API返回“显示名称”,然而,Swagger显示“枚举名称”,这经常导致混淆。有可能改变狂妄的价值观吗?

共有1个答案

辛可人
2023-03-14
public Object ...(@QueryParam(...)
                  @ApiParam(name = ..., value = "...", 
                            allowableValues = "displayname v1, displayname v2, displayname v3")
                  MyEnum myEnum) {
 类似资料:
  • 我正在使用Swagger/OpenAPI V3注释创建应用程序的API描述,这些注释从以下依赖项导入:

  • 我正在使用从以下依赖项导入的Swagger/OpenAPIV3注释创建应用程序的API描述: 其中一个批注是批注,它接受名为的属性,该属性允许字符串数组: 现在,我想使用在枚举类上构造的自定义方法,该方法返回允许的字符串数组,因此不需要在每次向枚举添加类型时添加该方法。以便我们可以这样使用它: 现在这是无法编译的,因为在执行注释时不知道该方法。是否有这样的解决方案允许在SwaggerV3注释属性值

  • 更新: ====================================================== 在我的团队的项目中,我们有一个带有java.time.temporal.ChronOunit字段的实体。在类中,是这样定义的: 此枚举类型具有索引(NANOS、秒、小时等),以及与这些索引关联的键值对,如 这并不重要,除非自动化测试工具会发现这些名称,并在请求中发送一个名称,然后请

  • 我试图让枚举显示友好的名称从描述(或任何其他属性)在招摇和响应。还试图解析的友好名称设置在主体/查询字符串在控制器的行动,而不尝试400 Bad请求或任何类型的验证错误。我还注意到的是,自定义的通用JsonConver我也没有正常工作。方法根本没有被调用。我如何让它工作? 我正在尝试让swagger-ui显示asc 要么swagger ui抛出客户端验证,并用红线突出显示字段 或者,如果我尝试在s

  • 我正在使用Swashback生成Swagger输出。在我的模型I上,具有以下属性: FieldValue是一个简单的类,可以保存ID和名称: 通过代码中的一些业务逻辑,一组可能的键值对(ID和名称)映射到此属性。 现在,我想在我的Swagger输出中的enum标签中显示所有可能的值。使用ISchemaFilter的一个实现,即MyProperty属性上的一个自定义属性,并使用allOf而不是简单的