簡體   English   中英

JAX-RS如何編寫響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM