我发现 Spring 请求验证与 laravel-validation 不同。 我必须根据类型和其他限制条件(例如最大长度)来验证字段。但是当字段不能转换为Dto的字段类型(由 Jackson 抛出)或字段太长(由 jsr-303 Spring 引发不同的异常。 >)。
如何通过JSON模式验证JSON请求?我认为这是更好的解决方案。
答案 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和文件名。如果验证失败,验证器将抛出我的自定义异常,并且异常处理程序将呈现错误消息