在我的项目中,我有一个控制器和同一个控制器接受的 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);
}
}