Rest 如何同时返回错误消息和HTTP状态代码?
我正在使用JAX-RS,我想显示HTTP状态和一条错误消息 示例:HTTP 204无内容 这是我的密码: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
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仅适用于少数边缘情况。如果你不需要它,就不要使用它。