如何将错误消息和HTTP状态代码一起返回?

时间:2017-06-30 13:19:11

标签: rest jax-rs

我正在使用JAX-RS,我想显示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 个答案:

答案 0 :(得分:1)

HTTP定义响应头和响应主体。后者是通过调用entity()设置的,前者是status()。所以你实际发送的是:

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仅适用于罕见的边缘情况。如果您不需要,请不要使用它。