Spring请求验证

时间:2019-08-25 17:03:10

标签: spring rest

我发现 Spring 请求验证与 laravel-validation 不同。 我必须根据类型和其他限制条件(例如最大长度)来验证字段。但是当字段不能转换为Dto的字段类型(由 Jackson 抛出)或字段太长(由 jsr-303 Spring 引发不同的异常。 >)。

如何通过JSON模式验证JSON请求?我认为这是更好的解决方案。

2 个答案:

答案 0 :(得分:0)

在DTO上使用javax.validation.constraints。这是baeldung

中的示例
import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.validation.constraints.Email;

public class User {

    @NotNull(message = "Name cannot be null")
    private String name;

    @AssertTrue
    private boolean working;

    @Size(min = 10, max = 200, message 
      = "About Me must be between 10 and 200 characters")
    private String aboutMe;

    @Min(value = 18, message = "Age should not be less than 18")
    @Max(value = 150, message = "Age should not be greater than 150")
    private int age;

    @Email(message = "Email should be valid")
    private String email;

    // standard setters and getters 
}

答案 1 :(得分:0)

好的,我使用java-json-tools / JSON-Schema-Validator库处理该问题。 我仅用一种方法创建了服务:“ validate”,它使用json-schema接收JsonNode和文件名。如果验证失败,验证器将抛出我的自定义异常,并且异常处理程序将呈现错误消息