Java JAX-RS如何编写响应

Java JAX-RS如何编写响应,java,jax-rs,Java,Jax Rs,我有以下代码: @POST @Path("query") @Produces(MediaType.APPLICATION_JSON) public MyObject myMethod(@FormParam("id") String id) { //if some condition is met if(...) throw new WebApplicationException(Response.Status.SERVICE_UNAVAILABLE); els

我有以下代码:

@POST
@Path("query")
@Produces(MediaType.APPLICATION_JSON)
public MyObject myMethod(@FormParam("id") String id)
{
    //if some condition is met
    if(...)
      throw new WebApplicationException(Response.Status.SERVICE_UNAVAILABLE);
    else
      //proceed to my logic and return myObject
}
因此,基本上,如果使用AJAX的web客户端收到Response.Status.SERVICE\u UNAVAILABLE,它将显示一个定制的web页面。如果呼叫成功,它将显示不同的网页

我的问题是:在
myMethod
中,我是否可以返回
Response.Status.SERVICE\u UNAVAILABLE
,而不抛出异常。比如:

if(...)
   return Response.Status.SERVICE_UNAVAILABLE)
else
   //proceed my logic and return myObject  

我基本上希望客户端知道此时无法满足其请求,并显示自定义网页。

您的方法应该返回
响应,而不是
MyObject

@POST
@Path("query")
@Produces(MediaType.APPLICATION_JSON)
public Response myMethod(@FormParam("id") String id) {
  if (/* error */) {
    return Response.status(Response.Status.SERVICE_UNAVAILABLE).build();
  }
  return Response.ok().entity(new MyObject(/* ... */)).build();
}

但是,我强烈建议在这种情况下使用
WebApplicationException
,主要是为了在逻辑上区分常规情况和例外情况。此
服务不可用
响应状态(HTTP code
503
)是错误的明确指示,而不是正常的执行流程。

谢谢。你能告诉我为什么推荐WebapplicationException吗?