【问题标题】:RESTful resource not found. 404 or 204? Jersey returns 204 on null being returned from handler未找到 RESTful 资源。 404 还是 204? Jersey 在从处理程序返回 null 时返回 204
【发布时间】:2010-02-03 21:35:19
【问题描述】:

如果您正在寻找 /Resource/Id 并且该资源不存在,我一直认为 404 是适当的响应。但是,当从 Jersey 处理程序返回 null 时,我会返回“204 No Content”。我可能会与其中任何一个合作,但很好奇其他人对此的想法。

回答我自己的下一个问题。要让 Jersey 返回 404,您必须抛出异常。

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

【问题讨论】:

  • 请注意,如果资源为空,即您实际上想要返回null,那么 204 将是正确的响应代码。
  • @MichaelMior 我有点困惑。 “null”不是意味着找不到对象吗?一个空数组可以被认为是没有内容,但一个 null 意味着它甚至不存在不是吗?
  • @RajaAnbazhagan 这真的取决于你的应用程序。

标签: rest jersey


【解决方案1】:

HTTP Code Definition 表示以 2 开头的代码表示成功调用,4 表示不成功调用。

  • 当您收到 204 时,它只是向您表明没有任何东西可以返回(通常您希望进行不需要返回任何内容的 POST 或 PUT 调用)

  • 当您收到 404 时,它表明调用不成功,因此它不会返回任何内容。

在您的情况下,404 是合适的,而不是 204!因为您可能想对来电者说他打错了电话。

【讨论】:

  • 我会说 201/202 (created/accepted) 更适合空的 PUT/POST 响应。
猜你喜欢
  • 2013-09-08
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 2013-01-20
  • 2018-02-06
相关资源
最近更新 更多