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 code503
)是错误的明确指示,而不是正常的执行流程。谢谢。你能告诉我为什么推荐WebapplicationException吗?