【问题标题】:Swagger (@Schema(required = true)) override the javax.validation messageSwagger (@Schema(required = true)) 覆盖 javax.validation 消息
【发布时间】:2023-01-30 21:04:56
【问题描述】:
我们已经将 swagger 引入到我们现有的 spring rest 应用程序中。我们已经有了 javax.validation 的 @NotNull 来验证有效负载,它工作正常。
在我们引入 Swagger 3 之后,我们使用了 @Schema(required = true) 和 @NotNull。现在 Swagger 覆盖了 javax.validation 的错误消息。
招摇之前:由javax.validation生成的“XXX must not be null”。
大摇大摆之后:缺少必需的创建者属性“XXX”。
是否可以禁用 swagger 验证?
提前致谢
【问题讨论】:
标签:
swagger
openapi
javax.validation
swagger-3.0
【解决方案1】:
是的,可以在 Spring REST 应用程序中禁用 Swagger 验证。您可以通过在应用程序配置中配置 springfox.documentation.spring.web.plugins.Docket bean 来做到这一点。
以下是如何禁用 Swagger 验证的示例:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.enable(false);
}
}
在上面的示例中,.enable(false) 方法禁用 API 的 Swagger 验证。您还可以通过设置 .enable(true) 以启用验证或设置 .enable(null) 以继承默认行为来控制验证。