在Rest API的方法参数级别上,Spring引导中是否存在验证



即使在服务层处理数据之前,我也希望对数据进行验证。

  • dto
@Validated
public class DataDto {

@NotBlank
@NotNull
String keyId;

我希望当Jackson开始将json转换为dto,然后注意对象的dto字段上方的注释时,它会发送一个带有错误的响应

@RestController
@RequestMapping(API_V3)
@Validated
public class DataRestController {
@PostMapping(path = "data")
public ResponseEntity<DataDto>
createNewModelBasedUploadFile(@RequestBody @Valid List<DataDto> modelList) {
}

请注意,我在这里验证一组值。

我还设置了

@Configuration
public class ValidConfig {
@Bean
MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}

未进行验证。

也许你还需要编写自己的验证器?但是我如何在这里连接和配置它?

我在这里和网上看过很多这样的问题。但我没有找到解决方案。基本上,所有验证都发生在实体试图保存到数据库时。。。。

有人对如何解决这个问题有什么想法吗?

更新

让我们总结一下:

1.@无效-必须安装在RestController上。

@RestController
@RequestMapping(API_V3)
@Validated
public class DataRestController {
}

2.@有效-必须安装在收集类型附近

createNewModelBasedUploadFile(@RequestBody List<@Valid DataDto> modelList) 
{
}

3.@已验证-不需要通过Java dto对象。

4.Java dto对象-必须在self字段之上有任何用于验证的注释。

public class DataDto {

@NotBlank
@NotNull
String keyId;
}

5.-pom.xml

我没有指出依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>

但是,进入pom.xml有:

<dependency>
<artifactId>validation-api</artifactId>
<groupId>javax.validation</groupId>
<version>2.0.1.Final</version>
</dependency>

6.配置文件-也不需要。

@Configuration
public class ValidConfig {
@Bean
MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}

请尝试

createNewModelBasedUploadFile(@RequestBody List<@Valid DataDto> modelList)

相关内容

  • 没有找到相关文章

最新更新