2017-06-30 9 views
0

JAX-RSを使用していて、HTTPステータスとエラーメッセージを表示します。エラーメッセージとHTTPステータスコードを一緒に返すには?

例:ここではHTTP 204 No Content

は私のコードです:

public Response getMessageById(@Context HttpServletRequest request, 
@PathParam("idMessage") BigInteger idMessage){ 
if (idMessage== null){ 
     return Response.status(HttpURLConnection.HTTP_NO_CONTENT) 
       .entity("No Content").build(); 
    } 
} 

これは、HTTPステータスなしNo Contentを表示します。

答えて

1

HTTPは応答ヘッダーと応答本体を定義します。後者はでentity()を呼び出して設定します。それでは、あなたが実際に送信することはこれです:あなたが使用するツールは、デフォルトでは表示されません場合

204 No Content 

No Content 

あなただけのヘッダーが表示されません。たとえば、curl -v http://your-rest-service/api/resourceを使用してください。さらに

:idが欠落している場合

  • は204を返さないでください。これは、セマンティクスに応じて、むしろ400または404になります。 204は何も返さない操作(PUT、POST、DELETEなど)のためのものです。
  • このパラメータをnullにすることはできません。要求が@Pathと一致しない場合、JaxRSはメソッドを選択しません。
  • HttpURLConnectionに定数を使用することは可能であるが、javax.ws.rs.core.Response.Status
  • HttpServletRequestのみまれなエッジケース用で使用することがより一致するであろう。必要がない場合は使用しないでください。
関連する問題