我使用 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
}

10-08 10:58