es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo utilizar un valor específico de un enum en un esquema Swagger utilizando anotaciones.

Aquí hay 3 clases Java simples:

@Getter
@Setter
public class Animal {
    protected String name;
    protected Integer age;

    public enum AnimalType{
        ANGRY,
        FUNNY
    }

}

@Getter
@Setter
public class Cat extends Animal{

    private AnimalType type=AnimalType.ANGRY;
}

@Getter
@Setter
public class Dog extends Animal{
    private AnimalType type=AnimalType.FUNNY;
}

¿Qué debo hacer para que Swagger genere algo como esto?

Nada
type*  AnimalType  cadena
       valor= FANNY
       Enum:
       >Array[2]

¿Existe alguna manera de hacerlo? Necesito agregar ENUM para todas las clases y un valor específico de este ENUM para cada clase.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de hacerlo. Necesitas agregar anotaciones de Swagger a tus clases Java para especificar el valor de enumeración para cada clase. Aquí tienes un ejemplo de cómo hacerlo para las clases Animal, Cat y Dog:

    @Getter
    @Setter
    @ApiModel(description = "Modelo de Animal")
    public class Animal {
        protected String name;
        protected Integer age;
    
        @ApiModelProperty(
                value = "Tipo de animal",
                allowableValues = "ANGRY,FUNNY",
                example = "FUNNY",
                required = true
        )
        public enum AnimalType{
            ANGRY,
            FUNNY
        }
    }
    
    @Getter
    @Setter
    @ApiModel(description = "Modelo de Cat")
    public class Cat extends Animal{
    
        @ApiModelProperty(
                value = "Tipo de gato",
                allowableValues = "ANGRY",
                example = "ANGRY",
                required = true
        )
        private AnimalType type=AnimalType.ANGRY;
    }
    
    @Setter
    @Getter
    @ApiModel(description = "Modelo de Dog")
    public class Dog extends Animal{
    
        @ApiModelProperty(
                value = "Tipo de perro",
                allowableValues = "FUNNY",
                example = "FUNNY",
                required = true
        )
        private AnimalType type=AnimalType.FUNNY;
    }
    

    Explicación:

    • La anotación @ApiModel se utiliza para proporcionar una descripción del modelo en Swagger UI.
    • La anotación @ApiModelProperty se utiliza para proporcionar una descripción del campo en Swagger UI.
    • El atributo allowableValues se utiliza para especificar los valores permitidos para una enumeración.
    • El atributo example se utiliza para proporcionar un valor de ejemplo para el campo.
    • El atributo required se utiliza para especificar si el campo es obligatorio o no en Swagger UI.

    Al agregar estas anotaciones, puedes generar la documentación Swagger deseada para las clases Animal, Cat y Dog.

Comments are closed.