Custom RESTEasy-Validation



我喜欢为get - parameter引入一个数字检查/constraintValidator。它应该看起来像:

@GET
@Path("/{docId}")
@IsNumeric
public SomeThing getSomeThing(@PathParam("docId") String docId) {
return ...;
}

我不知道如何实现它。docId应该被验证,当docId不是数字时,应该返回一个BadRequest。

您不需要对此进行任何验证。JAX-RS允许在@Path表达式中使用正则表达式。所以你可以用@Path("{docId: \d+}")。但这不会导致400个错误请求。相反,如果不匹配,您将得到404。这个应该是你想要的。如果它是一个坏的路径元素,那么它应该是404,因为无法找到URI(路径)。

但是,如果你真的,真的想做验证(并获得400),RESTEasy也有Bean验证支持。请不要使用这个。遵循良好的REST实践。

Paul的解决方案很优雅

如果你想对方法参数进行验证,你可以这样做:

@GET
@Path("/{docId}")
public SomeThing getSomeThing(@IsNumeric @PathParam("docId") String docId) {
return ...;
}

最新更新