Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 如何同时返回错误消息和HTTP状态代码?_Rest_Jax Rs - Fatal编程技术网

Rest 如何同时返回错误消息和HTTP状态代码?

Rest 如何同时返回错误消息和HTTP状态代码?,rest,jax-rs,Rest,Jax Rs,我正在使用JAX-RS,我想显示HTTP状态和一条错误消息 示例:HTTP 204无内容 这是我的密码: public Response getMessageById(@Context HttpServletRequest request, @PathParam("idMessage") BigInteger idMessage){ if (idMessage== null){ return Response.status(HttpURLConnection.HTTP_NO

我正在使用JAX-RS,我想显示HTTP状态和一条错误消息

示例:HTTP 204无内容

这是我的密码:

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状态的内容。

HTTP定义了响应头和响应体。后者由调用实体设置,前者由状态设置。因此,您实际发送的是:

204 No Content

No Content
如果您使用的工具在默认情况下不显示标题,您就看不到标题。例如使用curl-vhttp://your-rest-service/api/resource 看吧

此外:

如果缺少id,则不返回204。这可能是400或404,具体取决于语义。204用于不需要返回任何内容(如PUT、POST、DELETE)的操作。 我怀疑这个参数是否可以为null。如果请求与@Path不匹配,JaxRS将不会选择该方法。 虽然可以在HttpURLConnection中使用常量,但使用javax.ws.rs.core.Response.Status会更加一致 HttpServletRequest仅适用于少数边缘情况。如果你不需要它,就不要使用它。