找不到RESTful资源。 404或204? 泽西从处理程序返回null返回204

如果你正在寻找/Resource/Id和资源不存在,我一直认为,404是适当的回应。 但是,当从Jersey处理程序返回null时,我会返回“204无内容”。 我可以和任何一个人一起工作,但很好奇别人对此的想法。

回答我自己的下一个问题。 要让泽西返回404,你必须抛出exception。

  if (a == null) throw new WebApplicationException(404); 

HTTP代码定义指出以2开头的代码用于成功的呼叫,而4代表不成功的呼叫。

  • 当你得到204时,它只是告诉你没有任何东西可以返回(通常你期望如果你做了一个POST或者PUT调用,不需要返回任何东西)

  • 当你得到一个404的时候说明这个调用是不成功的,所以它不会返回任何东西。

在你的情况下,404是适当的,而不是204! 既然你可能想对打电话的人说他打错了电话。