首页 > 解决方案 > 如何将 Valid 和 NotBlank 用于 swagger 对象?

问题描述

在我的项目中,我有一个控制器和同一个控制器接受的 dto。决定更合适地使用 swagger-codegen。然后是验证问题,我将其应用于我的 dto,但我无法应用于 swagger 创建的对象。

@Data
public class MyCustomDto {
    @NotBlank(message = ".... ")
    private String a;
    @NotBlank(message = ".... ")
    private String b;
}

在控制器中使用带有注释的 MyCustomDto @Valid,我可以验证数据,如果这些字段之一为空,则请求将不起作用。

@javax.annotation.Generated(value = "io.swagger.codegen.v3.generators.java.JavaClientCodegen", date = "2021-05-23T15:23:40.775555+04:00[Asia/Baku]")
public class MySwaggerDto{
  @JsonProperty("a")
  private String a= null;

  @JsonProperty("b")
  private String b= null;
}

这些字段的我的 yaml 文件部分

        a:
          type: string
          description: sfdsfsdfdsf
          example: hh
        b:
          type: string
          description: asdsadas
          example: kjhgjgj

可以使 swaggerdto 与自定义 dto 类似地工作吗?我有一个带有handleMethodArgumentNotValid 方法的@ControllerAdvice 类,我用它来响应输入参数不正确的请求。

@ControllerAdvice
@Slf4j
public class MyExceptionsHandler extends ResponseEntityExceptionHandler {

   @Override
    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex,
            HttpHeaders headers, HttpStatus status, WebRequest request) {
//my some code
        return ResponseEntityBuilder.build(err);
    }
}

标签: spring-bootvalidationswagger-codegen-maven-plugin

解决方案


推荐阅读