Отображаемое имя OpenApi (Swagger) Enum

Мы используем аннотации openapi с микропрофилями для создания документации Swagger для наших остальных интерфейсов. Enums часто имеет свойство, в котором хранится отображаемое имя, которое отображается вместо Enum.

Например:

@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 показывает имя Enum, что часто приводит к путанице. Есть ли возможность изменить значения Swagger?


person Clemens    schedule 07.04.2021    source источник


Ответы (1)


Не могли бы вы предоставить нам аннотации, которые вы использовали для службы и результатов на swagger.json?

Вам необходимо вручную ввести атрибут allowableValues ​​ в аннотацию @ApiParam.

public Object ...(@QueryParam(...)
                  @ApiParam(name = ..., value = "...", 
                            allowableValues = "displayname v1, displayname v2, displayname v3")
                  MyEnum myEnum) {
person mothinx    schedule 07.04.2021