dubbo的rest支持采用Java标准的bean validation annotation(JSR 303)来做输入校验http://beanvalidation.org/
为了和其他dubbo远程调用协议保持一致,在rest中作校验的annotation必须放在服务的接口上,例如:
public interface UserService {
User getUser(@Min(value=1L, message="User ID must be greater than 1") Long id);
}
当然,在很多其他的bean validation的应用场景都是将annotation放到实现类而不是接口上。把annotation放在接口上至少有一个好处是,dubbo的客户端可以共享这个接口的信息,dubbo甚至不需要做远程调用,在本地就可以完成输入校验。
然后按照dubbo的标准方式在XML配置中打开验证:
<dubbo:service interface=xxx.UserService" ref="userService" protocol="rest" validation="true"/>