是否可以在JAX-RS资源上有效使用JSR303(Bean Validation)注释?
例如,如果我有一个资源成员,我注释了@NotEmpty,如果不满足此约束,则会向客户端生成错误?
这似乎是显而易见的事情,但也乐于被告知更好的方式(我不想将验证移到ORM /数据库级别)
我个人认为验证实体更有意义,因为它已经通过电线到达,由MessageBodyReader填充,基本上你不知道里面是什么,对吧?
因此,如果您决定验证实体,可以采用以下几种方法:
> AFAIK,Apache Wink不支持内置验证.您可以实现处理程序.请参阅DeploymentConfiguration.initRequestHandlersChain().它支持添加用户处理程序.在您的处理程序中,您可以执行任何验证.我甚至认为如果你贡献这个代码,Wink社区会很高兴.
这种方法唯一的问题 – 它与Apache Wink绑定.如果您决定转移到不同的JAX-RS框架,它将无法工作.
>另一种方法是在您自己的MessageBodyReader中进行此验证.您需要做的就是为您的实体注册一个特殊的阅读器并验证其中的实体.您仍然可以使用@Context Providers.getMessageBodyReader()来利用标准的MessageBodyReaders(如JAXB或Jackson).这种方法的好处在于它是标准的JAX-RS.你使用MessageBodyReaders做他们不想要的东西的坏处.
>最简单的方法是在每个资源方法的第一行验证实体.它会创建一些代码重复,但有时简单获胜.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。