Opa*_*pal 4 validation rest jersey guice javabeans
我正在使用jersey + guice来开发REST应用程序.我想对查询参数进行输入验证,但我正在寻找的是一种"随时可用"的解决方案,而不是自己编写.
我已经找到了对泽西的bean验证的支持,但遗憾的是我不知道如何将它与guice集成.我需要做的大部分验证都是简单的@NotNull检查.我需要验证值并在验证失败时返回详细消息.
有任何想法吗?建议?
我已经解决了.
我没有使用glassfish扩展到jersey,而是使用了apache bean验证.以下依赖项需要添加到项目(gradle方式):
compile 'org.apache.bval:bval-guice:0.5'
compile 'javax.validation:validation-api:1.1.0.Final'
Run Code Online (Sandbox Code Playgroud)
在创建guice注入器跟随模块时应添加:
org.apache.bval.guice.ValidationModule
Run Code Online (Sandbox Code Playgroud)
这是mapper的样子(groovy)
import com.google.inject.Singleton
import javax.validation.ConstraintViolationException
import javax.ws.rs.core.Response
import javax.ws.rs.ext.ExceptionMapper
import javax.ws.rs.ext.Provider
import static groovy.json.JsonOutput.toJson
import static javax.ws.rs.core.Response.Status.BAD_REQUEST
import static javax.ws.rs.core.Response.status
@Provider
@Singleton
class ValidationExceptionMapper implements ExceptionMapper {
@Override
Response toResponse(ConstraintViolationException e) {
status(BAD_REQUEST).entity(toJson(e.constraintViolations*.message)).build()
}
}
Run Code Online (Sandbox Code Playgroud)
必须使用简单的bind()方法在任何guice模块中绑定异常映射器.然后使用要验证的参数的方法应标记为:
org.apache.bval.guice.Validate
Run Code Online (Sandbox Code Playgroud)
并且参数例如:
javax.validation.constraints.NotNull
Run Code Online (Sandbox Code Playgroud)
就这样.
| 归档时间: |
|
| 查看次数: |
1213 次 |
| 最近记录: |