[英]JAX-RS How to write Response
我有以下代碼:
@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
}
所以基本上,如果我的Web客戶端使用AJAX收到Response.Status.SERVICE_UNAVAILABLE,它將顯示一個自定義的網頁。 如果通話成功,它將顯示不同的網頁。
我的問題是:無論如何,在myMethod
,我可以返回Response.Status.SERVICE_UNAVAILABLE
而不拋出異常。 就像是:
if(...)
return Response.Status.SERVICE_UNAVAILABLE)
else
//proceed my logic and return myObject
我基本上希望客戶知道此時無法滿足其請求並顯示自定義網頁。
您的方法應該返回一個Response
,而不是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
,主要是為了對常規和異常情況進行邏輯分離。 此SERVICE_UNAVAILABLE
響應狀態(HTTP代碼503
)是錯誤的明確指示,而不是正常的執行流程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.