如何使用注释验证 SOAP Spring Web 服务中的请求
How to validate request in SOAP Spring Web Services using annotations
我已经使用 SpringBoot 开发了一个 SOAP Web 服务,并希望使用基于注释的方法验证我的请求参数,如空、长度、最小值、最大值等,并希望 return 将适当的错误消息发送到客户。
我尝试使用带@Valid 注释和自定义异常处理程序的hibernate-validator,但它似乎不适用于SOAP 服务。 REST 服务运行良好。
能否建议我们如何在 SOAP 服务中实现这一点。
开发 SOAP 服务时,通常使用 XSD 模式进行验证。但是如果你喜欢使用 Bean Validation,你总是可以手动触发它。大致是这样的:
public abstract class SelfValidating<T> {
private final Validator validator;
public SelfValidating() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
}
public void validate() {
Set<ConstraintViolation<T>> violations = validator.validate((T) this);
if (!violations.isEmpty()) {
throw new MyValidationException(violations, (MyDTO) this);
}
}
}
将您需要的验证注释(@NotEmpty
等)放在 class 的实例字段上。
public class MyDTO extends SelfValidating<MyDTO> {
}
然后您可以通过在任意位置调用 myDTO.validate()
来触发验证,并在全局异常处理程序中处理异常。
我已经使用 SpringBoot 开发了一个 SOAP Web 服务,并希望使用基于注释的方法验证我的请求参数,如空、长度、最小值、最大值等,并希望 return 将适当的错误消息发送到客户。
我尝试使用带@Valid 注释和自定义异常处理程序的hibernate-validator,但它似乎不适用于SOAP 服务。 REST 服务运行良好。
能否建议我们如何在 SOAP 服务中实现这一点。
开发 SOAP 服务时,通常使用 XSD 模式进行验证。但是如果你喜欢使用 Bean Validation,你总是可以手动触发它。大致是这样的:
public abstract class SelfValidating<T> {
private final Validator validator;
public SelfValidating() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
}
public void validate() {
Set<ConstraintViolation<T>> violations = validator.validate((T) this);
if (!violations.isEmpty()) {
throw new MyValidationException(violations, (MyDTO) this);
}
}
}
将您需要的验证注释(@NotEmpty
等)放在 class 的实例字段上。
public class MyDTO extends SelfValidating<MyDTO> {
}
然后您可以通过在任意位置调用 myDTO.validate()
来触发验证,并在全局异常处理程序中处理异常。