我使用 RESTEasy JAX-RS 实现将Web服务组件部署到 JBoss Application Server 7 。
在 JAX-RS 中是否可以使用注释来声明必需的,必需的 @QueryParam 参数?而且,如果没有,处理缺少此类参数的情况的“标准”方法是什么?
当使用所有必需参数正确调用时,我的Web服务(资源)方法返回JSON字符串化的结果,但是我不确定向调用方指示缺少必需参数的最佳方法是什么。
最佳答案
好问题。不幸的是(或者幸运的是)JAX-RS中没有任何机制可以强制任何参数。如果未提供参数,则其值为NULL
,您的资源应进行相应处理。我建议使用WebApplicationException
通知您的用户:
@GET
@Path("/some-path")
public String read(@QueryParam("name") String name) {
if (name == null) {
throw new WebApplicationException(
Response.status(Response.Status.BAD_REQUEST)
.entity("name parameter is mandatory")
.build()
);
}
// continue with a normal flow
}