Saltar al contenido

SpringFox Swagger: campos opcionales y obligatorios en el modelo

Solución:

Sí por defecto Todos los campos serán opcionales. Para marcar un campo como requerido, puede utilizar la siguiente anotación.

@ApiModelProperty(required = true)

En el método getter del campo que debería ser requerido. Esto no mostrará el campo como “obligatorio”. Pero la etiqueta opcional se eliminará para este campo en la documentación.

Espero que esto ayude.

Se agregó soporte para anotaciones de validación de beans, específicamente para @NotNull, @Min, @Max y @Size en Springfox v2.3.2.

Puede colocar esas anotaciones en cualquiera de sus modelos de API.

Para usarlo, agregue la dependencia springfox-bean-validators:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-bean-validators</artifactId>
</dependency>

Agregue a la clase de configuración de su aplicación:

@Import({springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration.class})

Ver: https://springfox.github.io/springfox/docs/current/#springfox-support-for-jsr-303

Pruebe un código similar en Swagger Configuration:

    @Bean
public Docket api() {

    List<ResponseMessage> list = new java.util.ArrayList<>();
    list.add(new ResponseMessageBuilder().code(500).message("500 message")
            .responseModel(new ModelRef("JSONResult«string»")).build());
    list.add(new ResponseMessageBuilder().code(401).message("Unauthorized")
            .responseModel(new ModelRef("JSONResult«string»")).build());

    return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any())
            .paths(PathSelectors.any()).build().securitySchemes(Collections.singletonList(securitySchema()))
            .securityContexts(Collections.singletonList(securityContext())).pathMapping("https://foroayuda.es/")
            .directModelSubstitute(LocalDate.class, String.class).genericModelSubstitutes(ResponseEntity.class)
            .alternateTypeRules(newRule(
                    typeResolver.resolve(DeferredResult.class,
                    typeResolver.resolve(ResponseEntity.class, WildcardType.class)),
                    typeResolver.resolve(WildcardType.class)))
            .useDefaultResponseMessages(false).apiInfo(apiInfo()).globalResponseMessage(RequestMethod.GET, list)
            .globalResponseMessage(RequestMethod.POST, list);
}

Y en el mapeo del controlador agregue @RequestBody @Valid MyRequestClass req por ejemplo, si está pasando objetos en el cuerpo de la solicitud, y si está pasando parámetros, agregue algo como @RequestParam(value = "email", required = true, defaultValue = "") String email

Además, vea cómo en el código de configuración cómo hacer referencia a una clase con tipo genérico, es decir "JSONResult«string»" que está haciendo referencia JSONResult<String>

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *