找不到RESTful资源.404还是204?Jersey从处理程序返回null返回204

jr.*_*jr. 40 rest jersey

如果您正在寻找/Resource/Id并且该资源不存在,我总是认为404是适当的响应.但是,当null从Jersey处理程序返回时,我得到了"204 No Content".我可以与任何一个人合作,但我对其他人的想法感到好奇.

回答我自己的下一个问题.要让泽西岛返回404,您必须抛出异常.

    if (a == null)
        throw new WebApplicationException(404);
Run Code Online (Sandbox Code Playgroud)

Die*_*ias 50

HTTP代码定义规定,以2开头的代码是成功的呼叫和4不成功的.

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

  • 当你得到一个404它说明呼叫不成功,所以它不会返回任何东西.

在你的情况下,404是合适的,而不是204!因为你可能想告诉来电者他打错了电话.

  • 我会说201/202(创建/接受)更适合空的PUT/POST响应. (10认同)