RestEasy:在转换为Integer对象失败之前验证path参数是否为整数

时间:2016-09-15 13:15:43

标签: resteasy

当我有这样的休息终点时:

/user/abc

,请求URI为:

org.jboss.resteasy.spi.BadRequestException: Unable to extract parameter from
http request: javax.ws.rs.PathParam("id") value is 'abc' for public org.mypkg.restapi.User
org.mypkg.restapi.resources.UserResource.getUser(java.lang.Integer)

RestEasy尝试将abc转换为Integer并失败并出现异常:

one.two.three.four.five(One := One_var, Two := Two_Var);

不应该将描述java类和方法的异常发送到客户端,因为他只知道URI,而不知道URI如何映射和处理java类和方法。

在我看来,每个Rest API都需要这个(预)验证,所以我可能会忽略RestEasy中的某些机制。任何其他不是String的类型也会出现同样的问题,例如Date。

所以我的问题是:在尝试转换为Integer之前执行验证path参数是一个数字的最佳做法是什么?并返回适合客户端的错误消息,如" Path参数id应为整数"万一不是吗?

如果RestEasy没有这种机制,那么其他Rest框架呢?

0 个答案:

没有答案